Absolutnie nienawidzę cyfry 1
. Potrzebuję twojej pomocy w konwersji liczb na ich „właściwe formularze”.
Liczby w odpowiedniej formie nigdy nie mają dwóch 1
s z rzędu. 101
jest w porządku, ale 110
jest ohydne.
Aby przekonwertować, po prostu pomiń wszystkie niepoprawne liczby i policz normalnie. Na przykład...
1 -> 1
2 -> 2
...
10 -> 10
11 -> 12
12 -> 13
...
108 -> 109
109 -> 120
110 -> 121
111 -> 122
i tak dalej.
Twój program powinien przyjąć liczbę całkowitą i wyprowadzić ją w odpowiedniej formie. To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach.
109 -> 120
konwersji ...Odpowiedzi:
Burleska , 10 bajtów
{11 ~ [n!} FO
Starsza wersja:
źródło
Perl 5 , 34 bajtów
Zapętlanie licznika i zmienianie okazjonalnego double-one.
Test
źródło
Narzędzia Bash + GNU, 36
źródło
1$1
wystarczy, niż$1$1
?Pyth,
1311 bajtówZaoszczędź 2 bajty dzięki @FryAmTheEggman.
Prezentacje na żywo i przypadki testowe.
Wersja 13-bajtowa
źródło
JavaScript, 53 bajty
Alternatywnie (przy użyciu wyrażeń o tej samej długości):
źródło
Python 2, 50
Anonimowa funkcja, która wyświetla liczby niezawierające
11
po kolei, i bierze tęn
. Błąd „zero-by-one” przy zerowaniu indeksowania anuluje się po włączeniu0
do listy.Teoretycznie nie powiedzie się to w przypadku wystarczająco wysokich liczb
f(n)>2*n
, ale nie powinno to się zdarzyć, dopókin
przynajmniej nie będzie10**50
.51 bajtów:
Zlicza liczby,
i
dopóki nie zostanie przekroczony przydziałn
liczb bez11
.Funkcja ma tę samą długość z powodu koniecznych korekt indywidualnych.
źródło
Python 3 74
Nadal potrzebuję trochę gry w golfa.
Teraz jest dość brutalna siła.
źródło
Perl 5, 47 bajtów
źródło
JavaScript (ES6) 41
Jako funkcja anonimowa
Uwaga: najprostszym sposobem byłoby 44:
Przetestuj poniższy fragment kodu.
źródło
Haskell, 51 bajtów
Przykład użycia:
([x|x<-[0..],notElem('1','1')$zip=<<tail$show x]!!) 110
->121
.Jak to działa:
źródło
MUMPS, 37 bajtów
Całkiem proste. Jedyną „interesującą” rzeczą jest tutaj konstrukcja
j'[11
-'[
operator „nie zawiera”, więc"abc"'["ab"
jest to fałsz i"abc"'["cd"
prawda. Pomimo obu argumentówj'[11
bycia liczbami, MUMPS pozostaje nienaruszony. Z radością będzie automatycznie ustawiać oba operandy na sznurkach i kontynuować życie. Brawo!(Nawiasem mówiąc, jeśli jesteś w porządku z programu nigdy nie kończące możemy skrócić to do 35 bajtów:
t2(i) f j=1:1 s:j'[11 k=k+1 w:k=i j
)źródło
PHP, 43 bajty
źródło
Rubinowy, 24 bajtyŹle zinterpretowane zadanie, przeróbka później!
źródło
11
. Na przykład12
powinien dać13
, nie12
.