introduction
Considérons une séquence d'entiers et l'une de ses sous-séquences, disons A = [4 2 2 4 4 6 5] et B = [2 4 5] . Nous voulons supprimer les éléments de B de A dans l'ordre, et il existe plusieurs façons de le faire:
A = 4 2 2 4 4 6 5
B = 2 4 5
-> 4 2 4 6
A = 4 2 2 4 4 6 5
B = 2 4 5
-> 4 2 4 6
A = 4 2 2 4 4 6 5
B = 2 4 5
-> 4 2 4 6
A = 4 2 2 4 4 6 5
B = 2 4 5
-> 4 2 4 6
Dans tous les cas, la séquence restante est la même, [4 2 4 6] . Dans ce cas, nous disons que B est unique amovible de A .
La tâche
Vos entrées sont deux séquences d'entiers non négatifs, A et B , où B est garanti pour une séquence de A . Les entrées peuvent être égales et elles peuvent être vides. Vous pouvez les prendre dans n'importe quel ordre, dans n'importe quel format raisonnable.
Votre sortie doit être une valeur véridique si B est uniquement amovible de A , et une valeur fausse dans le cas contraire.
Règles et notation
Vous pouvez écrire un programme complet ou une fonction. Le nombre d'octets le plus bas gagne.
Cas de test
[] [] -> True
[0,3] [] -> True
[1,0,1] [1] -> False
[0,2] [0,2] -> True
[2,2,1,1,2,2,2] [2,1] -> True
[4,2,2,4,4,6,5] [4,5] -> False
[10,5,10,10,5,10] [10,5,10] -> False
[4,2,2,4,4,6,5] [2,4,5] -> True
[1,1,1,0,0,0,1,1,1,0] [1,0,1,1] -> True
[0,1,0,0,0,0,1,1,0,1] [1,0,1,1] -> False
[0,4,0,0,4,1,4,2,2] [0,0,0,1,4] -> True
[0,2,2,25,0,2,2,26,0,0,2] [2,0,0,0,2] -> True
[1,1,1,3,2,1,3,2,2,3,3,2] [1,1,2,3,2] -> False
[0,3,2,0,1,3,2,0,0,0,3,2] [0,1,2,0,3] -> False
[5,7,2,7,7,1,7,7,5,2,7,7,5,2,2,7,5] [2,7,5,7,7,2] -> False
[5,4,0,5,4,5,4,1,0,4,2,1,1,2,4,4,0,2,2,1] [4,0,1,1,2,1] -> False
[0,1,4,0,1,4,0,1,5,1,4,4,2,0,0,1,1,1,2,4] [0,1,0,0,2,0,1,4] -> True
x%_=x
pour le deuxième cas de%
. De plus, je pense que la fonction principale serait plus courte sous forme pointue.x%_=x
ne fonctionnera pas car les types ne correspondront pas mais_%_=[]
enregistreront un octet.JavaScript (ES6), 141
152 156 159Fonction récursive - assez longue
Moins golfé
Tester
la source
Pyth - 27 octets
Sur mobile à l'école en ce moment, donc pas complètement joué au golf.
Suite de tests
la source
JavaScript (ES6),
116114113 octetsRenvoie
false
outrue
.Formaté et commenté
Cas de test
Afficher l'extrait de code
la source
MATL , 27 octets
Les cas de test les plus longs manquent de temps dans le compilateur en ligne.
Essayez-le en ligne!
la source
JavaScript (Firefox 30+),
159147 octetsVoici quelques approches alternatives, les deux fonctions anonymes:
Extrait de test
Afficher l'extrait de code
la source
Mathematica, 128 octets
Fonction sans nom prenant deux arguments de liste, où le premier est la sous-séquence et le second est la séquence complète; sorties
True
ouFalse
.La partie principale est la séquence suivante, non gérée pour la lisibilité:
Ici
#
représente la sous-séquence, par exemple{2,4,5}
,. La premièreArray
commande crée une liste de chaînes comme{"a1___","a2___","a3___","a4___"}
, qui est ensuiteRiffle
associée à d#
pour produire une liste bizarre comme{"a1___",2,"a2___",4,"a3___",5,"a4___"}
; cette liste est ensuite convertie en une expression Mathematica réelle. Pour l'exemple{2,4,5}
, une évaluation partielle de ce code de base estce qui donne exactement une liste de tous les moyens possibles pour éliminer la sous- séquence
{2,4,5}
de#2
et laisser le reste de la liste seule.Une fois cette liste générée, nous supprimons simplement les doublons en utilisant
Union
et testons si la longueur de la sortie résultante est 1 ou non.la source