Hier, j'ai posé cette question au sujet des shuffles de fusils. Il semble que la question d'hier était un peu trop difficile, donc cette question est une tâche connexe mais beaucoup plus facile.
Aujourd'hui, on vous demande de déterminer si une permutation est en fait un shuffle de fusil. Notre définition du shuffle de fusil est adaptée de notre dernière question:
La première partie du remaniement est la division. Dans la partition de division, le jeu de cartes en deux. Les deux sous-sections doivent être continues, mutuellement exclusives et exhaustives. Dans le monde réel, vous voulez rendre votre partition aussi proche que possible, mais dans ce défi, ce n'est pas une considération, toutes les partitions, y compris celles qui sont dégénérées (une partition est vide) sont d'égale considération.
Après avoir été partitionnées, les cartes sont assemblées de telle sorte que les cartes conservent leur ordre relatif dans la partition à laquelle elles appartiennent . Par exemple, si la carte A est avant la carte B dans le jeu et que les cartes A et B sont dans la même partition, la carte A doit être avant la carte B dans le résultat final, même si le nombre de cartes entre elles a augmenté. Si A et B sont dans des partitions différentes, ils peuvent être dans n'importe quel ordre, quel que soit leur ordre de départ, dans le résultat final.
Chaque mélange de fusils peut ensuite être considéré comme une permutation du jeu de cartes d'origine. Par exemple la permutation
1,2,3 -> 1,3,2
est un remaniement rapide. Si vous divisez le jeu comme ça
1, 2 | 3
nous voyons que chaque carte dans 1,3,2
a le même ordre relatif à toutes les autres cartes dans sa partition. 2
est toujours après 1
.
D'un autre côté, la permutation suivante n'est pas un shuffle de fusil.
1,2,3 -> 3,2,1
Nous pouvons le voir parce que pour les deux partitions (non triviales)
1, 2 | 3
1 | 2, 3
il y a une paire de cartes qui ne maintiennent pas leur ordre relatif. Dans la première partition 1
et 2
changez leur ordre, tandis que dans la deuxième partition 2
et 3
changez leur ordre.
Tâche
Étant donné une permutation via une méthode raisonnable, déterminez si elle représente un shuffle de fusil valide. Vous devez sortir deux valeurs constantes distinctes, une pour "Oui, c'est un shuffle riffle" et une pour "Non, ce n'est pas un shuffle riffle".
Il s'agit de code-golf donc les réponses seront notées en octets avec moins d'octets étant meilleurs.
Cas de test
1,3,2 -> True
3,2,1 -> False
3,1,2,4 -> True
2,3,4,1 -> True
4,3,2,1 -> False
1,2,3,4,5 -> True
1,2,5,4,3 -> False
5,1,4,2,3 -> False
3,1,4,2,5 -> True
2,3,6,1,4,5 -> False
[3,1,4,2,5]
.
[2,3,6,1,4,5]
.
[0, ..., n-1]
au lieu de [1, ..., n]
comme entrée?
0
pour faux mais n'importe quel entier[1, +∞)
pour vrai?