Wejście
Dwie listy A
i B
nieujemne liczby całkowite.
Wynik
Albo 1
, 0
albo -1
, w zależności od tego, czy A
jest większy niż, równy, czy mniejszy niż B
w odniesieniu do skręconego uporządkowania leksykograficznego, jak zdefiniowano poniżej. Jeśli chcesz, możesz zastąpić 1
, 0
oraz -1
z innymi trzema wartościami stałymi.
Skręcone uporządkowanie leksykograficzne jest podobne do zwykłego uporządkowania leksykograficznego, ponieważ porównuje listy element po elemencie i decyduje o ich kolejności przy pierwszym różnym indeksie. Jednak w wersji skręconej używamy innego porządku dla nieujemnych liczb całkowitych w każdym indeksie. Mianowicie, przy każdym indeksie i
(indeksowanie zaczyna się od 1
) kolejność pierwszych i
nieujemnych liczb całkowitych (od 0
do i-1
) jest odwrócona i są one przenoszone ponad wszystkie inne liczby. Ponadto „brakujący element”, który oznacza, że jedna lista jest krótsza od drugiej, jest przenoszony bezpośrednio poniżej i-1
. Wizualnie kolejność na indeksie i
to
i < i+1 < i+2 < i+3 < ... < [missing element] < i-1 < i-2 < i-3 < ... < 2 < 1 < 0
Zauważ, że pierwszy ...
oznacza nieskończenie wiele liczb. Oznacza to, że następujące listy są uporządkowane rosnąco w odniesieniu do skręconego porządku leksykograficznego:
[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]
Zasady
Możesz podać pełny program lub funkcję. Wygrywa najniższa liczba bajtów, a standardowe luki są niedozwolone.
Przypadki testowe
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]
Odpowiedzi:
CJam - 57
Tak, to wciąż bardzo długo ...
Wypróbuj online
Krótkie wyjaśnienie:
kod zwraca 0, jeśli tablice są równe w tradycyjnym sensie, w przeciwnym razie konwertuje każdy element każdej tablicy na tablicę 2-elementową: [0 a i ], jeśli i > i (na podstawie 0), [1 niezależnie] Jeśli i brakuje i [2-a i ] Jeżeli i <i. W tym procesie krótsza tablica jest również rozszerzana do większego rozmiaru. Następnie transformowane tablice są porównywane leksykograficznie, a wynik jest korygowany do -1/1.
źródło
Python 2, 76 bajtów
Zastępuje to każdą liczbę całkowitą na obu listach 2-krotkami, aby uwzględnić skręcone uporządkowanie. Wbudowane w Python 2
cmp
zajmuje się resztą.Stosowanie:
źródło
[3,2,3,1341] < [3,2,3] < [3,2,3,0]
?(0,)
na końcu każdej listy, która jest większa niż jakikolwiek(-1, x)
i mniejsza niż(i-x, x)
kiedyi-x >= 0
.Perl, 74
Bez dobrych funkcji manipulacji tablicami perl nie jest optymalnym narzędziem do zadania, ale działa.
Przetestuj mnie .
źródło
J, 95 bajtów
(Nie super krótkie, ale cokolwiek. Zdecydowanie do gry w golfa.)
Zaliczenie wszystkich przypadków testowych. (Świetny zestaw przypadków testowych! Dzięki!)
Metoda:
m=.>:>./x,y
).(],m$~>&#*-&#
(|+(1+m)*0>:*)@(i.@#-~])
((m+#x,y)&#.)
*@-&
źródło
Mathematica, 65
Stosowanie:
źródło