Wyzwanie:
Utwórz program, który pobiera dodatnią niezerową liczbę całkowitą i wysyła 4 kolejne liczby w kolejności opisanej poniżej.
Uwaga: Sprawdzanie, czy wejście jest w rzeczywistości dodatnią liczbą całkowitą niezerową, nie jest konieczne
Sekwencja:
Każda liczba w tej sekwencji (oprócz pierwszej, która jest wartością wejściową) składa się z n cyfr, gdzie n jest liczbą parzystą. Jeśli podzielimy liczbę na pary n / 2, dla każdej pary pierwsza cyfra powinna oznaczać, ile razy druga cyfra pojawiła się w poprzednim numerze
Objaśnienie wizualne :
Rozważ ten przykład „sekwencer startowy” lub wejście 6577
Kolejna liczba w sekwencji powinna wyglądać tak: 161527
Ponieważ wejście ma 1 „6”, 1 „5” i 2 „7”.
Jeśli wejście ma zbyt wiele cyfr (więcej niż 9 pojedynczej cyfry), nie można uzyskać prawidłowego wyniku.
Przykład: 111111111111
(12 1)
Kolejna liczba w kolejności musi opisywać 12 1. W ten sposób podzieliliśmy go na 9 1 i 3 1 (suma 9 + 3 = 12)
Następna liczba:9131
Powinieneś iterować 4 razy dla danych wejściowych i wyprowadzać je (albo zwróć listę / tablicę 4 liczb całkowitych, albo wyślij je oddzielając je spacją, dopuszczalne są również znaki nowej linii)
„Numer można zapisać na wiele sposobów, jak go zapisać?” :
Jeśli się nad tym zastanowić, przykładowe dane wejściowe6577
można również zapisać jako 271516 (dwa 7, jeden 5, jeden sześć). Jest to jednak niepoprawny wynik. Powtórz liczbę od lewej do prawej. Tak więc 161527. Gdyby to było 7657
, iterowałbyś liczbę 7, a następnie liczbę 6, a następnie liczbę 5, w ten sposób poprawne wyjście byłoby271615
Przykład I / O:
Wejście:75
Wyjście:1715 211715 12311715 4112131715
Wejście:1
Wyjście:11 21 1211 3112
Wejście: 111111111111
(12 1-tych)
Wyjście:9131 192113 31191213 23411912
Jest to odmienne od pytania „Powiedz, co widzisz”, ponieważ sekwencje są różne: https://oeis.org/A005150 <- Ten zwraca liczby takie jak to:
Wejście: 1211 Wyjście: 111221
Podczas sekwencji, o którą proszę zrobiłby
Wejście: 1211 Wyjście: 3112
Dwie sekwencje są różne i wymagają różnych algorytmów.
Moja pytana sekwencja: https://oeis.org/A063850 Sekwencja
„Możliwy duplikat”: https://oeis.org/A005150
Ważna specyfikacja:
Ponieważ nie było wystarczająco jasne dla niektórych osób, które próbowały odpowiedzieć na to pytanie, poprawna wartość wyjściowa dla k znaków, w których k> 9 nie jest „kc” (gdzie c jest char), ale 9c (k-9) c itd. Zatem poprawna wydajność dla 12 1 nie jest 121
(12 1), ale 9131
(9 1, (12-9) 1 i tak dalej)
W razie wątpliwości kod jest niepoprawny, jeśli kiedykolwiek wypisuje liczbę z nieparzystą liczbą cyfr (np. 121), powinien mieć wynik liczb parzystych ze względu na charakter sekwencji.
To jest code-golf, więc kod z najmniejszą liczbą bajtów wygrywa.
źródło
1111111111111111111
23411912
zamiast23411219
?Odpowiedzi:
PowerShell ,
111104 bajtówWypróbuj online!
źródło
$i
w swojej pętli, dlaczego po prostu nie lubisz bezpośrednio$z=$args;0..3|%{...
$args
(i początkowo myślałem, że skorzystam$i
). Zamierzałem to zmierzyć, ale potem pytanie zostało zamknięte.Python 2 , 116 bajtów
Wypróbuj online!
źródło
1111111111111111111
są niepoprawne. Powinno być,919111
ale daje919121
11
wyjściowych powinno być21 1211 3112 132112
, nie rozumiem, dlaczego jest111
to pierwsza iteracja, która powoduje, że cały łańcuch idzie źle05AB1E ,
302321 bajtówWypróbuj online!
Wyjaśnienie
źródło
Mathematica, 117 bajtów
Wygląda na to, że nie powinno to być tak długie.
źródło
C # 246 bajtów
Nie golfowany:
Wypróbuj tutaj (Wpisz tekst w dolnej ramce po skompilowaniu i naciśnij ENTER)
źródło
Galaretka , 27 bajtów
Wypróbuj online!
Sukcesywne
€
s nie można zagnieżdżać, ponieważ nie można zagnieżdżać łańcuchów.Zagnieżdżanie z osobnym linkiem: 27 bajtów.
Drukuj zamiast kumulacji: 27 bajtów.
Wyjaśnienie
źródło
PHP, 141 bajtów
Wypróbuj online!
źródło