Contribution
Deux listes A
et B
d'entiers non négatifs.
Production
Ou bien 1
, 0
ou -1
, selon qu'il A
est supérieur à, égal à, ou plus petit que B
par rapport à l' ordre lexicographique torsadé tel que défini ci - dessous. Si vous le souhaitez, vous pouvez remplacer 1
, 0
et -1
par trois autres valeurs constantes.
L'ordre lexicographique tordu est semblable à l'ordre lexicographique ordinaire, en ce sens que vous comparez les listes élément par élément et décidez de leur ordre au premier indice différent. Cependant, dans la version torsadée, nous utilisons un ordre différent pour les entiers non négatifs à chaque index. À savoir, à chaque index i
(l'indexation commence à partir de 1
), l'ordre des premiers i
entiers non négatifs (de 0
à i-1
) est inversé, et ils sont déplacés au-dessus de tous les autres nombres. De plus, "l'élément manquant" qui signifie qu'une liste est plus courte que l'autre est déplacé directement en dessous i-1
. Visuellement, l'ordre à l'index i
est
i < i+1 < i+2 < i+3 < ... < [missing element] < i-1 < i-2 < i-3 < ... < 2 < 1 < 0
Notez que le premier ...
désigne une infinité de nombres. Cela signifie que les listes suivantes sont en ordre croissant par rapport à l'ordre lexicographique tordu:
[3,2,3,4]
[3,2,3,5]
[3,2,3,10]
[3,2,3,1341]
[3,2,3]
[3,2,3,3]
[3,2,3,2]
[3,2,3,1]
[3,2,3,0]
Règles
Vous pouvez donner un programme complet ou une fonction. Le nombre d'octets le plus bas l'emporte et les failles standard sont interdites.
Cas de test
Output 1:
[0] []
[] [1]
[] [1,2,1,2]
[2,1] [1,1]
[0,1,2] [0,2,1]
[3,0] [3,1]
[3,1] [3]
[2] [2,2]
[2] [2,23]
[2,24] [2,23]
[2,1] [2,23]
Output 0:
[] []
[0] [0]
[1,1] [1,1]
[2,1,2] [2,1,2]
Output -1:
[1,2,1,1,2] [1,2,1,1,1]
[1,2,1,1,5] [1,2,1,1,4]
[1,2,1,1,5] [1,2,1,1]
[1,2,1] [1,2,1,1]
[1,2,1,1,5] [1,2,1,1,6]
[1,2,1,1,6] [1,2,1,1,7]
Réponses:
CJam - 57
Ouais c'est encore très long ...
Essayez-le en ligne
Brève explication:
Le code génère 0 si les tableaux sont égaux au sens traditionnel, sinon il convertit chaque élément de chaque tableau en un tableau à 2 éléments: [0 a i ] si a i > i (basé sur 0), [1 quel que soit] si a i est manquant, et [2 -a i ] si a i <= i. Dans le processus, le tableau le plus court est également étendu à la plus grande taille. Ensuite, les tableaux transformés sont comparés lexicographiquement et le résultat est ajusté à -1/1.
la source
Python 2, 76 octets
Cela remplace chaque entier dans les deux listes par un tuple 2 pour tenir compte de l'ordre tordu. La fonction
cmp
intégrée de Python 2 fait le reste.Usage:
la source
[3,2,3,1341] < [3,2,3] < [3,2,3,0]
?(0,)
à la fin de chaque liste, ce qui est supérieur à tout(-1, x)
et inférieur à celui de(i-x, x)
quandi-x >= 0
.Perl, 74
Sans de bonnes fonctions de manipulation de tableaux, Perl n'est pas l'outil optimal pour le travail, mais il fonctionne.
Testez- moi .
la source
J, 95 octets
(Pas super court mais peu importe. Certainement jouable au golf.)
Passer tous les cas de test. (Grand jeu de cas de test! Merci!)
Méthode:
m=.>:>./x,y
).(],m$~>&#*-&#
(|+(1+m)*0>:*)@(i.@#-~])
((m+#x,y)&#.)
*@-&
la source
Mathematica, 65
Usage:
la source