(Zainspirowany 95 postaciami ASCII ... 95 cytatów filmowych )
Wyzwanie
Biorąc pod uwagę dane wejściowe n
, nth
wypisz liczbę Fibonacciego . Można użyć 0
lub 1
indeksowanie, państwo, które w swojej składania proszę. Proste, tak? Problem polega na tym, że musisz wziąć zestaw znaków z poprzedniej poprzedniej odpowiedzi, usunąć z niego dwa znaki i dodać osobny znak. Oddzielny znak musi
- nie mogą pochodzić z zestawu znaków poprzedniej poprzedniej odpowiedzi
- być z zestawu (drukowalny ASCII, spacja, nowa linia, tabulator poziomy)
a zatem twój całkowity rozmiar zestawu znaków będzie dokładnie o jeden mniejszy niż zestaw bezpośredniej poprzedniej odpowiedzi.
Pierwsza odpowiedź
Pierwsze zgłoszenie musi zawierać podzbiór (wszystkie ASCII do wydruku, spacja, znak nowej linii i tabulator poziomy) z usuniętymi dwoma znakami. Każde późniejsze przesłanie musi ograniczyć odpowiedzi do tego oryginalnego formatu tylko ASCII (co oznacza, że nie można dodać znaku Unicode ani rozszerzonego znaku ASCII ... przepraszam Jelly, APL i in.).
Przykłady i wyjaśnienia
- Załóżmy, że pierwsza odpowiedź jest w języku C i zawiera (prawie wszystkie ASCII do druku, nową linię
%
i tabulację poziomą) i pomija^
znaki z zestawu znaków. Drugi uległość, następnie należy usunąć dwie postacie z poprzedniego (prawie wszystkie druku ASCII, znak nowej linii i poziomym TAB) zestawu znaków i dodać albo%
albo^
. Być może jest to jednoskładnikowa odpowiedź PowerShell, która pomija nową linię. I tak dalej. - Jeśli poprzednia odpowiedź zawierała
print(){}!*+
zestaw znaków (12 znaków), przesłanie może miećprint(){}!
(10 znaków) i jeden dodatkowy znak,print(){!+
(10 znaków) i jeden dodatkowy znak itp. - Jeśli poprzednia odpowiedź miała
print(){}!*+
swój zestaw znaków (12 znaków) , odtąd nie można miećprint()
i&
(8 znaków) jako zestawu znaków12 - 8 > 1
. - Jeśli poprzednia odpowiedź miała
print(){}!*+
swój zestaw znaków (12 znaków), przesłanie nie mogłoby miećprint(){}!
(10 znaków) plus dodatkowego znaku*
jako zestawu znaków, ponieważ mimo że to 11 znaków,*
jest ono zawarte w poprzednim zestawie. - Nie każda postać w twoim zestawie postaci musi zrobić coś pożytecznego dla twojego poddania się. Na przykład, jeśli poprzednią odpowiedzią był
print(){}!*+
zestaw znaków, a Twój język ma wbudowaną!
funkcję obliczającą sekwencję Fibonacciego i#
rozpoczynającą komentarz, przesłanie może być!#print(){}
i nadal jest poprawne. - Możesz użyć tej samej postaci z zestawu postaci wiele razy. Załóżmy na przykład, że twój zestaw znaków był
!*#_
, twoja odpowiedź może być!!!**#**#_!!
i byłaby do zaakceptowania. - Oprócz swojego kodu (a także wyjaśnienia, które są miłe!) Proszę również wyraźnie wymienić swój zestaw znaków, aby ułatwić przyszłe przesyłanie.
Zwycięski
Zwycięzcą konkursu będzie osoba, która opublikowała drugie najnowsze zgłoszenie (tj. Nie osoba, która opublikowała ostatnią, ponieważ zerwała łańcuch).
Ostateczne zasady
Obowiązują zwykłe reguły łączenia odpowiedzi :
- Ta sama osoba nie może publikować dwa razy z rzędu
- Jeśli odpowiedź zostanie uznana za niepoprawną (na przykład użyła niedozwolonego znaku lub nie oblicza się poprawnie), należy ją usunąć (i wszelkie kolejne odpowiedzi, które z niej wynikają)
- Dwóch użytkowników, którzy opublikują „w tym samym czasie”, będzie musiało zezwolić na wcześniejsze zgłoszenie
- Tego samego języka nie można opublikować dwa razy z rzędu. Do celów tej reguły języki tej samej rodziny (np. Python 2 i Python 3) liczą się jako „ten sam język”.
Ostateczne rzeczy:
- Ten post działa najlepiej, jeśli sortujesz według „Najstarsze”, aby odpowiedzi były w odpowiedniej kolejności.
- Kyle Gullion skonstruował tutaj sprawdzanie kodu w Pythonie , aby sprawdzić, czy brakuje lub używasz niewłaściwych znaków.
Odpowiedzi:
1. C.
Nie zawiera
{
lub}
.Wypróbuj online!
Mam nadzieję, że zrobiłem to dobrze.
źródło
{
lub}
tak można następnie dodać drugą.{
lub}
, to możesz dodać drugi i odpowiedź Brain-Flak.*
. Czy wolno nam pomijać postacie z naszego zestawu znaków i sprawić, by nadal były „dołączane”, czy też było to przeoczenie?2?1*1
to naprawi.2. Mathematica
Nie zawiera
}
,Z
lub zakładkę poziomą. (Ponownie włączone{
.)Dwie pierwsze linie to tylko komentarz; ostatni wiersz to funkcja wbudowana, wykorzystująca jedyne prawdziwe super kosmicznie uporządkowane indeksowanie, w którym wejścia 0 i 1 dają odpowiednio wyjścia 0 i 1 (nie mam pojęcia, czy nazwać to 0-indeksowanym czy 1-indeksowanym).
źródło
8. Oktawa
Dodano
U
i usunięto+
oraz-
. Rozwiązanie nie zawiera+-`01AEI
znaku tabulacji lub nie .Na podstawie matrycy Fibonacciego .
źródło
t
jednak ...\t
to sposób, w jaki znak tabulatora jest drukowany w Pythonie (którego użyłem, by sprawdzić moją odpowiedź), zmodyfikuję, aby było bardziej przejrzyste.33, MATL
Dodano
-
, usunięto()
. Rozwiązanie nie zawiera!&'()/\01?AEIKLMNPSTWZ`dmwz{}|~
, tabulacji, spacji ani znaku nowej linii.Wypróbuj w MATL Online
Poprawiono błąd:
0
,1
, i\
przypadkowo pozostawione w komentarzu (po%
) na końcu. Ich usunięcie nie psuje funkcjonalności. Przeniesiono tę odpowiedź z 32 do 33, próbując zachować jej ważność. Jeśli trzeba go usunąć, daj mi znać, a ja to zrobię.źródło
36. Java
Dodał
\
. Usunięteqx
. Nie używa!&'()/1?AEIKLMNPSTWZ`dmnqtwxz{}|~[]
, tabulacji ani spacji.Wiem, że prawdopodobnie mogłem poczekać dłużej, ale chciałem się tym upewnić, zanim będzie za późno. Ta klasa nie tylko definiuje funkcję, która przyjmuje liczbę całkowitą
n
i zwraca tę liczbę Fibonacciego, ale także drukuje pierwsze 20 dla zabawy. Starałem się zachować należytą staranność, pisząc to w zwykłej starej javie bez podstępnej gry w golfa, a następnie usunąłem nielegalne postacie 1 do 1, aż dotarliśmy do stworzenia, które widzisz przed sobą.Wypróbuj online!
źródło
0
37. Python 2
Ponownie dodane
x
. Nie używa!&'()/1?AEIMNPSTWZdmnqtwz{}|~[]
, spacji, tabulacji ani `. Usunięto K i L.Z komentarzami:
Podejście to wykorzystuje ogólny termin serii Fibonacciego.
źródło
3) Brain-Flak
Nie zawiera
Z
,~
,A
lub zakładkę poziomą. (Ponownie dołączony}
)Wypróbuj online!
źródło
5, Haskell
Usunięto
AEIOU
i dodano kartęZ
Wypróbuj online!
źródło
12. Python 3
dodane
:
usunięte{;
nie zawiera{};`01AEIPQx
ani znaku tabulacji.źródło
{;
, nie};
.6. Flak mózgu
Wypróbuj online! Nie używa
tabAEIU`_
i dodano z powrotemO
źródło
26 Prolog (SWI)
Dodał
%
. UsunięteNK
. Nie używa&*01AEIKLMNPSTWZ`dmrwz{}]
, tabulacji ani nowego wiersza.Wypróbuj online!
źródło
34. pieprzenie mózgu
Dodano nową linię, usunięto
n
it
. Nie używa!&'()/\01?AEIKLMNPSTWZ`dmntwz{}|~
, tabulacji ani spacji. (być może możemy teraz pobrać trochę języków 2D)0-indeksowane. Wejściowe / wyjściowe wartości bajtów.
Wypróbuj online!
źródło
4, Python 2
Usunięto
AEIZ
, dodano kartę~
Wypróbuj online!
źródło
11. Standardowy ML (mosml)
Dodał
+
. Usunięte:}
. Nie zawiera:}0`1AEIPQx
ani znaku tabulacji.SML nie jest tio i użyłem ml różne Moskwa, ale nie online SMLNJ interpreter tutaj .
źródło
10. C.
Dodano
m
, usuniętoPQ
. Nie zawiera+`01AEIPQx
ani znaku tabulacji.Flaga kompilatora:
-lm
Wypróbuj online!
źródło
.
nadal brakuje w twoim komentarzu.9. Python 2
Dodano
-
, usuniętom
ix
. Nie zawiera+`01AEImx
znaku tab lub nie .Rekurencyjna funkcja Pythona! Dodaje wszystkie liczby Fibonacciego wstecz do
n
1.źródło
1
a zostało pominięte345678BCDFGHJKLMNOPQRSTUVWXYZ
18. Oktawa
Dodano
;
i usuniętof
oraz spację. Rozwiązanie nie zawiera{}:`*%01AEIPQfrd
znaków tabulacji, znaków nowej linii i spacji.Identyczne z odpowiedzią 8 , tylko z większą nienawiścią SML: P
źródło
23. Standardowy ML (mosml)
Znowu jedziemy. Dodano
Q
, usunięto}
i]
. Nie używa%&*+01:AEILMPZ`dmrzM{}]
tabulatora ani liniiźródło
Q
zamiast tego.25. CJam
Dodano z
+
powrotem, usuniętoS
iT
. Nie używa%&*01AEILMPSTZ`dmrz{}]Ww
tabulatora ani linii.Basically a port of my older answer, but this one uses some eval trickery to circumvent the lack of braces.
0-indexed.
Try it online!
źródło
27. JavaScript
Added
*
, removed"
and'
. Doesn't use"&'01AEIKLMNPSTZ`dmrz{}]Ww
, tab, or linefeed.źródło
28. Haskell
Try it online! Usage:
g 3
gives2
.Added
"
, removed<space>
and-
. Does not use&'-01AEIKLMNPSTZ`dmrz{}]Ww
or any white spcae.źródło
30. Standard ML
Added
:
, removed+
and?
. Does not contain!&'+-01?AEIKLMNPSTWZ`dmrwz{}
or any white space.The first part
fun$(a,b,x)n=if(length(x)=n)then(length(a))else$(b,a@b,()::x)n
defines a function$
which computes then
th fibonacci number itereatively using an unary list encoding. The length of argumentx
indicates the current number anda
andb
are lists of lengthfib(length(x)-1)
andfib(length(x))
. Ifn
equalslength(x)
we returnlength(b)
, otherwise recursively adda
andb
via list concatenation and incrementx
by adding an element()
to it.The second part
("#%*./23456789<>BCDFGHJOQRUVXY\\^_cjkopqvy|~";$([],[()],[]))
is a sequence where the string is discarded and$([],[()],[])
is the initialisation of the function$
witha = 0
,b = 1
andx = 0
, resulting in an anonymous function which computes the nth fibonacci number.źródło
32, Python 3
Added
r
and removed|~
. Solution contains no!&'/\-01?AEIKLMNPSTWZ`dmrwz{}|~
, no tab, no newline, and no space characters.źródło
39. Python 2
Added
0
. Removed@^
. Doesn't use!^&'()/1?@AEIMNPSTWZdmntwz{}|~[] `
, tab or newline.Argument to exec without escape sequences:
Try it online!
źródło
38. Matl
Added
q
. Removed0 <newline>
. Doesn't use!&'()/1?AEIKLM0NPSTW{Z`dmntwxz}|~[]
, tab, newline, or space.Try it online
źródło
q
x
, you didn't remove it, yet it's restricted. Can you add x at the end of the comment? The restricted list also says you don't useq
, so you need to remove that.7, Python 2
Re-included
_
. Removed characters: tab andAEIU`
, and (just to get a little nasty)0
and1
. Otherwise, just a copy of Wheat Wizard's answer (hence the community wiki).Try it online!
źródło
13. Standard ML (mosml)
Added
x
. Removed:r
. Doesn't contain:;{}0`1AEIPQr
or tab character.After we've pretty much excluded C-style languages, let's go after Python. This answer is pretty much identical to answer 11.
źródło
14. Octave
Added
r
and removed newline and space. Solution contains no{}:;`01AEIPQ
, no tab, no newline, and no space characters.Based on a closed form formula (7).
źródło
16. Octave
Added
/
and removed * and space. Solution contains no{}:;`*%01AEIPQ
, no tab, no newline, and no space characters.Identical to answer 14, just a straight up attack on SML and Python :P
źródło
15. Standard ML (mosml)
Added space and removed
%/
. Doesn't contain{}:;`01AEIPQ
, tab, or newline.źródło