Ty też tworzysz program, który przyjmuje liczbę całkowitą jako dane wejściowe i wyjściowe jako pierwsze, niezależnie od tego, jak długo wyglądała i mówiła sekwencja .
Na przykład:
$ ./LAS
8
[1,11,21,1211,111221,312211,13112221,1113213211]
Dokładny sposób wyświetlania listy jest nieistotny, o ile użytkownicy wyraźnie widzą różne liczby sekwencji. Ale tutaj jest haczyk. Nie można użyć żadnej zmiennej zdefiniowanej przez użytkownika.
Na przykład:
- Brak zmiennych, w tym zmiennych o zasięgu.
- Gdy masz funkcje, nie mogą mieć nazwy. (Wyjątek, jeśli Twój język wymaga funkcji głównej lub podobnej do pracy, możesz mieć tę funkcję.)
- Gdy masz funkcje, nie mogą one nazywać argumentów.
Nie możesz także korzystać z biblioteki o określonych możliwościach związanych z sekwencją wyglądu i powiedzeń, nie możesz uzyskać dostępu do sieci ani dostarczyć programowi żadnych plików (chociaż może on generować i używać własnych). To jest golf golf, tak wygrywa najkrótszy kod w postaci!
code-golf
restricted-source
PyRulez
źródło
źródło
When you have functions, they can not have named arguments.
:?Odpowiedzi:
GolfScript (31 znaków)
Dostosowane z mojej odpowiedzi na poprzednie pytanie typu „ spójrz i powiedz” . Ten ma mniej uciążliwe ograniczenie dla języków funkcjonalnych, co pozwala zaoszczędzić 5 znaków, ale ponieważ większość odpowiedzi na poprzednie pytanie nie może być dostosowane (jest to szalenie uciążliwe ograniczenie dla języków niefunkcjonalnych), nie sądzę, aby miało to sens aby zamknąć go jako duplikat.
źródło
Haskell 206 Chars
Działa za pomocą funkcji grupy, aby pogrupować je w grupy równych rzeczy. Następnie używa aplikacji z funkcjami, aby zbudować funkcję, która jednocześnie odczytuje długość i dołącza ją do jednego elementu. Używa poprawki i mapy, aby utworzyć definicję rekurencyjną (bez punktów.) I proszę bardzo.
źródło
J (42 znaki)
Programowanie bez użycia punktów (zwane także milczeniem) jest naturalne w J.
To funkcja, aby z niej skorzystać, piszesz kod, spację i numer wejściowy. Na przykład,
Zwróć uwagę na ładne pola wyjściowe.
Dodatek : Oto kilka „cheatów”, których początkowo byłem zbyt nieśmiały, ale teraz, gdy widziałem, jak inni używają ich w pierwszej kolejności…
Oto wersja 36-znakowa z inną „konwencją wywoływania”: zamień 8 na żądaną liczbę terminów.
A jeśli posiadanie dodatkowych zer na wyjściu jest OK, oto wersja 32-znakowa:
źródło
GolfScript, 36 znaków
Zmienne są dość rzadko używane w GolfScript, a to zadanie z pewnością ich nie potrzebuje. Wejście jest ustawione na standardowe wejście, a wyjście na standardowe wyjście. Na przykład dane wejściowe
8
dają dane wyjściowe:Mogę później napisać szczegółowe wyjaśnienie tego kodu, ale przynajmniej łatwo można stwierdzić, że nie używa on zmiennych, ponieważ nie zawiera
:
nigdzie operatora przypisania zmiennych .źródło
Haskell, 118 znaków (80 bez importu)
źródło
Bash i coreutils,
11173 znakówuniq -c
wykonuje ciężkie podnoszenie, aby wygenerować kolejny numer w sekwencji.yes
,sed
Ieval
stworzyć niezbędną liczbę powtórzeń rurociągu przetwarzania. Reszta to tylko formatowanie.Dane wyjściowe są umieszczane w pliku o nazwie
o
.:źródło
Mathematica, 65 znaków
Przykład:
źródło
J, 37 znaków
Na podstawie mojej odpowiedzi na pytanie o wzór groszku . Tutaj może istnieć pewien potencjał skrócenia. Użycie jest takie samo jak dla drugiej odpowiedzi J:
Ma również problem z dodatkowymi zerami, który miał mój wzór groszku.
źródło
Perl 6:
6353 znakówUtwórz leniwą listę sekwencji Look and Say (
1,*.subst(/(\d)$0*/,{.chars~.[0]},:g)...*
), a następnie uzyskaj tyle elementów, ile określił użytkownik ([^get]
czyli indeks tablicy i środki[0..(get-1)]
) isay
wszystkie.Leniwa lista działa najpierw biorąc 1, a następnie, aby wygenerować każdy kolejny numer, bierze ostatni znaleziony numer i zastępuje wszystkie sekwencje tej samej cyfry, zgodnie z dopasowaniem
/(\d)$0*/
, i zamienia je na {ile} + {jaka cyfra} lub.chars~.[0]
.Jedynymi zmiennymi w tym kodzie są
$0
pierwsze przechwycenie dopasowania i domyślna$_
zmienna tematyczna , którą.method
wywołują, i żadna z nich nie jest zdefiniowana przez użytkownika.źródło
GolfScript,
5743 znakówMoje własne podejście. Niestety skończyło się to dłużej niż istniejące = (.
Przykładowe dane wyjściowe dla stdin
8
:Alternatywna wersja bez
9
wartownika, ale ma ona dłużej 47 znaków. Podejrzewam, że ma większy potencjał:źródło
Scala 178
źródło
i
ini=>
jest zmienną.Dyalog APL, 35 znaków
(⊢,⊂∘∊∘((≢,⊃)¨⊃⊂⍨2≢/0,⊃)∘⌽)⍣(⎕-1)⊢1
⎕
jest oceniane wejście. W linku zastąpiłem go 8, ponieważ tryapl.org nie pozwala na wprowadzanie danych przez użytkownika.Bez nazwanych zmiennych (
a←1
), bez nazwanych funkcji (f←{}
), bez argumentów (⍺
,⍵
).Tylko skład funkcji:
f¨
redukcjaf/
:, dojazdy:f⍨
f⍣n
:, komponuj:f∘g
(f g h)B ←→ (f B)g(h B)
;A(f g h)B ←→ (A f B)g(A h B)
(f g)B ←→ f(g B)
;A(f g)B ←→ f(A g B)
(f g h k) ←→ (f (g h k))
Zastosowane podstawowe funkcje:
A⊢B ←→ B
⌽B
⊃B
A,B
A≢B
:, policz:≢B
⊂B
partycja:A⊂B
∊B
W tryapl.org, jeśli usuniesz końcowy
⊢1
, który jest argumentem tej masowo skomponowanej rzeczy, możesz zobaczyć diagram tego, jak jest analizowany:źródło
J 66 (z I / O)
bez we / wy, wyniki 43:
Śmieszne pytanie, które należy sobie zadać, kiedy pojawi się pierwsze 9?
źródło