Biorąc pod uwagę listę N
liczb całkowitych, każda z N
cyframi, wypisuje liczbę, która różni się od pierwszej liczby z powodu pierwszej cyfry, drugiej liczby z powodu drugiej cyfry itp.
Przykład
Biorąc pod uwagę tę listę:
1234
4815
1623
4211
Liczba 2932
jest pierwsza cyfra jest inna od pierwszej liczby pierwszej cyfrze, jego druga cyfra jest różna od drugiej cyfry druga liczba jest itp Dlatego byłoby to ważne wyjście.
Wejścia
- Możesz wziąć zarówno listę,
N
jak i dane wejściowe, lub tylko listę, jeśli chcesz. - Każda liczba całkowita na liście musi koniecznie mieć tyle cyfr, ile długość listy (
N
) - Liczby nie będą miały żadnych zer wiodących
- Lista wejściowa musi zawierać liczby, a nie ciągi znaków.
- Możesz przyjmować dane wejściowe jako argumenty funkcji, poprzez
STDIN
lub cokolwiek podobnego. - Możesz założyć, że lista nie będzie dłuższa niż 10 elementów (i żadna liczba na liście nie będzie większa niż
2147483647
)
Wyjścia
- Nie wystarczy, że danych wyjściowych nie ma na liście. Cyfry muszą się różnić, jak wyjaśniono powyżej.
- Możesz użyć dowolnej strategii wyboru cyfr, która szanuje ograniczenia różnych cyfr.
- Liczba nie może mieć wiodących zer
- Możesz podać liczbę poprzez
STDOUT
, zwrócić ją z funkcji itp.
Przypadki testowe
Input:
12345678
23456789
34567890
45678901
56789012
67890123
78901234
89012345
Possible output: 24680246
Input:
1
Possible output: 2
Punktacja
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
code-golf
number
number-theory
Fatalizować
źródło
źródło
STDIN
liczbę całkowitą przed analizą?STDIN
domyślnie jest to string ...Odpowiedzi:
Galaretka,
87 bajtów1 bajt zapisany dzięki Dennisowi.
Wypróbuj online!
Wyjaśnienie
Konwertuje każdą cyfrę na
1
, z wyjątkiem0
i1
staje się2
.źródło
CJam (
1514 bajtów)Demo online
Dzięki Adnan za jednobajtowe oszczędności.
Sekcja
źródło
i2%)
może to być49&)
praca bezpośrednio ze znakami, a nie kodami ASCII.Python 2,
4745 bajtówDzięki @xnor za grę w golfa z 2 bajtów!
Przetestuj na Ideone .
Jak to działa
`x`
daje ciąg znaków reprezentujący listę x .W pierwszym przypadku testowym daje to ciąg znaków
[1::n+3]
pobiera co (N + 3) th postaci - w którym n oznacza długość x począwszy od drugiego. Rozliczając 2 znaki,
, pobieramy pierwszą cyfrę pierwszej liczby, drugą cyfrę drugiej liczby itp.Bierzemy teraz liczbę modulo 10 n ÷ 2, aby zmapować pierwszą cyfrę z zakresu [0, 4] .
W przypadku 93579135 otrzymujemy 93579135% 50000000 = 43579135 .
Na koniec dodajemy 10 n ÷ 9 do ostatniego wyniku, co zwiększa - zawijając od 9 do 0 - wszystkie cyfry o 1 (brak przeniesienia) lub 2 (z przeniesieniem).
W przypadku 43579135 otrzymujemy 43579135 + 11111111 = 54690246 .
źródło
MATL,
11109 bajtówPobiera na wejściu tylko wektor kolumnowy liczb całkowitych.
N
nie jest zapewniony.Wypróbuj online
Wyjaśnienie
źródło
2
: matl.tryitonline.net/…VXd9\QV!U
Pyth, 11 bajtów
Prosta pętla, zmień każdą cyfrę na 1, z wyjątkiem tego, że 1 staje się 2.
źródło
Q
ik
! Możesz jednak zaoszczędzić jeden bajt podczas transformacji cyfr:s.eh-12@`b
Siatkówka oka,
393837Zapisano 1 bajt dzięki Martin!
Wymaga końcowego wejścia liniowego na wejściu.
Pobiera przekątne i tłumaczy 0 i 2-9 na 1 oraz 1 na 2.
Podstawowym pomysłem na zdobycie przekątnych jest przesunięcie przechwytywania dla każdego rzędu powyżej bieżącego rzędu, a następnie wykorzystanie przechwytywania w celu dopasowania do postaci, a następnie zachowanie następnego znaku.
Wypróbuj online
źródło
J,
2622 bajtówPodobne podejście do innych przy użyciu metody
<= 1
iincrement
diagonalnej.Stosowanie
Wymaga tylko listy liczb całkowitych jako argumentu.
źródło
Python 2, 54 bajty
źródło
-~n
Java, 94 bajty
Czyste operacje numeryczne dla wygranej! :)
Przykładowe wejście / wyjście:
Pełny program (z nie golfowym kodem):
źródło
Java, 93 bajty
Nie golfił
Wynik
źródło
J, 37 bajtów
Prawdopodobnie można grać w golfa, ale zapomniałem, czy istnieje polecenie „przekątnych”.
źródło
n
za pomocą<list> (#:~#&10) <n>
. Pierwszą przekątną można znaleźć(< 0 1) |: <list>
gdzie(< 0 1)
jest pole do wyboru przez osie, używając obu, z|:
Reng v.3.3, 60 bajtów
Dla Renga było to dość proste. Wypróbuj tutaj! Dane wejściowe to rozdzielona spacjami lista liczb.
1: init
k
to liczba wejść (liczba liczb), a my zmniejszamy o 1 i przywracamy dla etapu pętli.aií
pobiera wszystkie dane wejściowe.r
odwraca stos do przetwarzania danych wejściowych.1ø
przechodzi do następnej linii.2: pętla
1[
zdejmuje najwyższy przedmiot ze stosu i umieszcza go w nowym stosie.å
dzieli go na cyfry.{$}
wypycha blok kodu zawierający operację „upuść”; jest to powtarzanek
razy (k*
) i blok kodu jest upuszczany ($
.k1-#k
zmniejszak
.)9(
umieszcza9
w STOS i-
odejmuje TOS od STOS.#o
przechowuje ten numero
ia$;
upuszcza wszystkie elementy stosu.]
zamyka stos macierzysty.o
odkłada zo
powrotem na góra; to nasza cyfra, którą zapisujemy.)
przesuwa ją na dół, abyśmy mogli kontynuować zapętlanie.s
zwykle sprawdza brak wejścia (tzn. równość do-1
), ale możemy go użyć, aby wyjść z pętli, gdyk == -1
. Więcs^
idzie kiedyk == -1
.$
spadak
ze stosu, a nasza pętla zaczyna się od nowa.3: końcowy
<
kieruje wskaźnik w lewo i$
spadak
ze stosu.b
jest lustrem lewostronnym, więc wchodzimy przez niego, ale odbija się ono z powrotem po trafieniu;
, lustro w stosie.!n
wypisuje cyfrę, jeśli i tylko jeśli idziemy w lewo.~
kończy program po zakończeniu drukowania.źródło
Mathematica 52 bajty
Jest to zgodne z podejściem Petera Taylora i innych (bez użycia kodów Ascii).
Przykład
źródło
ClojureScript, 58 znaków
Wymagania dotyczące typu sprawiły, że było to trochę dłużej niż to konieczne, a
map-indexed
bycie tak wieloma znakami nie pomogło.Często moje zgłoszenia są również poprawne Clojure, ale wykorzystuje to niektóre z nieszczelności ClojureScript w JavaScript. Odejmowanie liczby i ciągu powoduje, że ciąg jest wymuszany na liczbę - to znaczy
(- 9 "5")
równa się4
.źródło
PHP, 46/41/40 bajtów
Różne selektory cyfr do porównania. Myślałem, że „9-cyfrowy” będzie najkrótszy, ale specjalny przypadek potrzebny do utrzymania zera z pierwszej cyfry go przytłacza.
Dostarczone z argumentów CLI:
źródło
Ruby, 21 bajtów
Pełny program. Uruchom z
-n
flagą. Wykorzystuje następujące odwzorowanie:n -> n%2+1
.źródło
JavaScript (ES6), 41
Sztuczka% 9 + 1 została zapożyczona z odpowiedzi Suever. Tym razem
.reduce
bije.map
. Uwaga:+=
operator służy do unikania nawiasów.źródło
Perl, 18 bajtów
Obejmuje +1 dla
-p
Uruchom z wierszami wejściowymi na STDIN. Wyjście wynosi 1, z wyjątkiem 2, gdy przekątna wynosi 1
cantor.pl
źródło
Pyth, 14 bajtów
Wypróbuj online!
źródło