(Inspiriert von den 95 ASCII-Zeichen ... 95 Filmzitaten )
Die Herausforderung
Bei Eingabe n
die nth
Fibonacci-Zahl ausgeben . Sie können entweder 0
oder 1
indizieren, bitte geben Sie an, welche in Ihrem Beitrag. Einfach, ja? Der Haken ist, dass Sie den Zeichensatz der unmittelbar vorhergehenden Antwort nehmen, zwei Zeichen daraus entfernen und ein separates Zeichen hinzufügen müssen. Das separate Zeichen muss
- nicht aus dem Zeichensatz der unmittelbar vorhergehenden Antwort stammen
- aus dem Satz von (druckbare ASCII, Leerzeichen, Zeilenvorschub, horizontale Registerkarte)
und daher ist Ihre Gesamtgröße des Zeichensatzes genau eine Nummer kleiner als der unmittelbar vorhergehende Antwortsatz.
Die anfängliche Antwort
Die erste Übermittlung muss eine Teilmenge von (alle druckbaren ASCII-Zeichen, Leerzeichen, Zeilenumbrüche und horizontalen Tabulatoren) enthalten, wobei zwei Zeichen entfernt werden müssen. Jede spätere Einreichung muss ihre Antworten auf dieses Original-ASCII-Format beschränken (dh Sie können kein Unicode- oder erweitertes ASCII-Zeichen hinzufügen ... sorry Jelly, APL, et al.).
Beispiele und Erläuterungen
- Angenommen, die erste Antwort befindet sich in C und enthält (fast alle druckbaren ASCII-, Zeilen- und horizontalen Tabulatoren) und lässt das
%
und^
aus seinem Zeichensatz weg . Bei der zweiten Übermittlung müssen dann zwei Zeichen aus dem vorherigen Zeichensatz (fast alle druckbaren ASCII-, Zeilen- und horizontalen Zeichen) entfernt und entweder das%
oder hinzugefügt werden^
. Vielleicht ist es eine einzeilige PowerShell-Antwort, bei der die Zeilenumbrüche weggelassen werden. Und so weiter. - Wenn die vorherige Antwort
print(){}!*+
einen Zeichensatz (12 Zeichen) hätte, könnte Ihr Beitragprint(){}!
(10 Zeichen) und ein zusätzliches Zeichenprint(){!+
(10 Zeichen) und ein zusätzliches Zeichen usw. enthalten. - Wenn die vorherige Antwort
print(){}!*+
einen Zeichensatz (12 Zeichen) hatte, konnte Ihr Beitrag seitdem nichtprint()
und&
(8 Zeichen) als Zeichensatz haben12 - 8 > 1
. - Wenn die vorherige Antwort hatte
print(){}!*+
als Zeichensatz (12 Zeichen), könnte Ihre Vorlage nicht hatprint(){}!
(10 Zeichen) plus zusätzliche Zeichen*
als Zeichensatz, da obwohl die 11 Zeichen ist, die*
in dem vorherigen Satz enthalten ist. - Nicht jedes Zeichen in Ihrem Zeichensatz muss etwas Nützliches für Ihre Einreichung tun. Wenn beispielsweise die vorherige Antwort
print(){}!*+
als Zeichensatz verwendet wurde und Ihre Sprache über eine integrierte Funktion verfügt!
, die die Fibonacci-Sequenz berechnet und#
einen Kommentar startet, ist Ihre Übermittlung möglicherweise!#print(){}
noch gültig. - Sie können dasselbe Zeichen aus Ihrem Zeichensatz mehrmals verwenden. Angenommen, Ihr Zeichensatz war
!*#_
, Ihre Antwort könnte!!!**#**#_!!
akzeptabel sein und wäre akzeptabel. - Bitte führen Sie zusätzlich zu Ihrem Code (und auch eine Erklärung ist nett!) Explizit Ihren Zeichensatz auf, um ihn für zukünftige Einreichungen zu vereinfachen.
Gewinnen
Der Gewinner der Herausforderung ist die Person, die den zweitletzten Beitrag gepostet hat (dh nicht die Person, die zuletzt gepostet hat, da sie die Kette gebrochen hat).
Endgültige Regeln
Es gelten die üblichen Regeln für die Verkettung von Antworten :
- Dieselbe Person kann nicht zweimal hintereinander posten
- Wenn eine Antwort als ungültig eingestuft wird (z. B. ein verbotenes Zeichen verwendet oder nicht korrekt berechnet wurde), muss sie gelöscht werden (und alle nachfolgenden Antworten, die ebenfalls darauf verweisen).
- Zwei Benutzer, die "zur gleichen Zeit" posten, müssen die frühere Einreichung stehen lassen
- Dieselbe Sprache kann nicht zweimal hintereinander gepostet werden. Für die Zwecke dieser Regel gelten Sprachen derselben Familie (z. B. Python 2 und Python 3) als "dieselbe Sprache".
Letzte Dinge:
- Dieser Beitrag funktioniert am besten, wenn Sie nach "Ältesten" sortieren, damit die Antworten in der richtigen Reihenfolge angezeigt werden.
- Kyle Gullion hat hier in Python einen Code-Checker erstellt , um zu überprüfen, ob Sie vermisst werden oder falsche Zeichen verwenden.
Antworten:
1. C
Enthält kein
{
oder}
.Probieren Sie es online!
Ich hoffe, ich habe das richtig gemacht.
quelle
{
oder}
so, dann kannst du das andere hinzufügen.{
oder hinzufügt}
, dann können Sie den anderen und die Brain-Flak-Antwort hinzufügen.*
. Dürfen wir Zeichen aus unserem Zeichensatz auslassen und müssen sie noch "enthalten" sein, oder war das ein Versehen?2?1*1
würde das beheben.2. Mathematica
Enthält keine
}
,Z
oder horizontale Registerkarte. (Eingeschlossen{
.)Die beiden ersten Zeilen sind nur ein Kommentar. Die letzte Zeile ist die eingebaute Funktion, bei der die Eingabe 0 und 1 die Ausgabe 0 bzw. 1 ergeben.
quelle
8. Oktave
Hinzugefügt
U
und entfernt+
und-
. Lösung enthält kein+-`01AEI
oder Tabulatorzeichen.Basierend auf der Fibonacci Matrix .
quelle
t
aber ...\t
Wenn das Tabulatorzeichen in Python gedruckt wird (mit dem ich meine Antwort überprüft habe), bearbeite ich es, um es ein bisschen klarer zu machen.33, MATL
Hinzugefügt
-
, entfernt()
. Die Lösung enthält keine!&'()/\01?AEIKLMNPSTWZ`dmwz{}|~
Tabulatoren, Leerzeichen oder Zeilenumbrüche.Probieren Sie es bei MATL Online aus
Festen Fehler:
0
,1
und\
wurden in dem Kommentar versehentlich links (nach dem%
) am Ende. Ihre Entfernung beeinträchtigt die Funktionalität nicht. Diese Antwort wurde von 32 auf 33 verschoben, um ihre Gültigkeit zu gewährleisten. Wenn es gelöscht werden muss, lassen Sie es mich bitte wissen und ich werde genau das tun.quelle
36. Java
Hinzugefügt
\
. Entferntqx
. Verwendet weder!&'()/1?AEIKLMNPSTWZ`dmnqtwxz{}|~[]
Tabulator noch Leerzeichen.Ich weiß, ich hätte wahrscheinlich länger warten können, aber ich wollte sichergehen, dass ich das herausbekomme, bevor es zu spät ist. Diese Klasse definiert nicht nur eine Funktion, die eine Ganzzahl annimmt
n
und diese Fibonacci-Zahl zurückgibt, sondern gibt auch die ersten 20 aus Spaß für Sie aus. Ich habe versucht, meine Sorgfalt zu wahren, indem ich dies in einfachem, altem Java ohne hinterhältiges Golfen geschrieben habe, und dann habe ich unzulässige Zeichen 1 für 1 entfernt, bis wir zu der Kreatur gekommen sind, die Sie jetzt vor sich sehen.Probieren Sie es online!
quelle
0
37. Python 2
Readded
x
. Verwendet kein!&'()/1?AEIMNPSTWZdmnqtwz{}|~[]
Leerzeichen, Tabulator oder `. K und L entfernt.Mit Kommentaren:
Dieser Ansatz verwendet den allgemeinen Begriff der Fibonacci-Reihe.
quelle
3. Brain-Flak
Enthält keine
Z
,~
,A
, oder horizontale Registerkarte. (Neu aufgenommen}
)Probieren Sie es online!
quelle
5, Haskell
Entfernt
AEIOU
und Tab hinzugefügtZ
Probieren Sie es online!
quelle
12. Python 3
hinzugefügt
:
entfernt{;
enthält kein{};`01AEIPQx
oder Tabulatorzeichen.quelle
{;
, nicht};
.6. Brain-Flak
Probieren Sie es online! Wird nicht verwendet
tabAEIU`_
und wieder hinzugefügtO
quelle
26. Prolog (SWI)
Hinzugefügt
%
. EntferntNK
. Verwendet weder&*01AEIKLMNPSTWZ`dmrwz{}]
Tabulator noch Zeilenvorschub.Probieren Sie es online!
quelle
34. Gehirnfick
Newline hinzugefügt, entfernt
n
undt
. Verwendet weder!&'()/\01?AEIKLMNPSTWZ`dmntwz{}|~
Tabulator noch Leerzeichen. (Vielleicht können wir jetzt einige 2D-Sprachen bekommen)0-indiziert. Die Eingabe / Ausgabe erfolgt durch Bytewerte.
Probieren Sie es online!
quelle
4, Python 2
AEIZ
Tab entfernt , hinzugefügt~
Probieren Sie es online!
quelle
11. Standard ML (mosml)
Hinzugefügt
+
. Entfernt:}
. Enthält kein:}0`1AEIPQx
oder Tabulatorzeichen.SML ist nicht auf TIO, und ich verwendet , um die moskau ml Vielfalt, aber es gibt ein Online - smlnj Dolmetscher hier .
quelle
10. C
Hinzugefügt
m
, entferntPQ
. Enthält nicht+`01AEIPQx
oder Tabulatorzeichen.Compiler-Flag:
-lm
Probieren Sie es online!
quelle
.
fehlt noch in deinem Kommentar.9. Python 2
Hinzugefügt
-
, entferntm
undx
. Enthält kein+`01AEImx
oder Tabulatorzeichen.Rekursive Python-Funktion! Addiert alle Fibonacci-Zahlen rückwärts bis
n
1.quelle
1
und ausgelassen345678BCDFGHJKLMNOPQRSTUVWXYZ
18. Oktave
Hinzugefügt
;
und entferntf
und Leerzeichen. Die Lösung enthält keine{}:`*%01AEIPQfrd
, keine Tabulatoren, keine Zeilenumbrüche und keine Leerzeichen.Identisch mit Antwort 8 , nur mit mehr SML-Hass: P
quelle
23. Standard ML (mosml)
Es geht wieder los. Hinzugefügt
Q
, entfernt}
und]
. Verwendet weder%&*+01:AEILMPZ`dmrzM{}]
Tabulator noch Zeilenvorschubquelle
Q
stattdessen.25. CJam
+
Zurück hinzugefügt , entferntS
undT
. Verwendet nicht%&*01AEILMPSTZ`dmrz{}]Ww
Tabulator noch Zeilenvorschub.Im Grunde genommen eine Portierung meiner älteren Antwort, aber diese verwendet einige Auswertungs-Tricks, um den Mangel an Zahnspangen zu umgehen.
0-indiziert.
Probieren Sie es online!
quelle
27. JavaScript
Hinzugefügt
*
, entfernt"
und'
. Verwendet weder"&'01AEIKLMNPSTZ`dmrz{}]Ww
Tabulator noch Zeilenvorschub.quelle
28. Haskell
Probieren Sie es online! Verbrauch:
g 3
gibt2
.Hinzugefügt
"
, entfernt<space>
und-
. Verwendet&'-01AEIKLMNPSTZ`dmrz{}]Ww
keine weißen Teile.quelle
30. Standard ML
Hinzugefügt
:
, entfernt+
und?
. Enthält!&'+-01?AEIKLMNPSTWZ`dmrwz{}
keine Leerzeichen.Der erste Teil
fun$(a,b,x)n=if(length(x)=n)then(length(a))else$(b,a@b,()::x)n
definiert eine Funktion$
, die dien
Fibonacci-Zahl iterativ unter Verwendung einer unären Listencodierung berechnet . Die Länge des Argumentsx
gibt die aktuelle Anzahl und ana
undb
sind Listen mit Längefib(length(x)-1)
undfib(length(x))
. Wennn
gleich, gebenlength(x)
wir zurücklength(b)
, andernfalls fügen Sie rekursiva
undb
über die Listenverkettungx
ein Element hinzu und inkrementieren()
es.Der zweite Teil
("#%*./23456789<>BCDFGHJOQRUVXY\\^_cjkopqvy|~";$([],[()],[]))
ist eine Sequenz , in der die Zeichenkette verworfen wird , und$([],[()],[])
ist die Initialisierung der Funktion$
mita = 0
,b = 1
undx = 0
, in einer anonymen Funktion ergibt , die die n - te Fibonacci - Zahl berechnet.quelle
32, Python 3
Hinzugefügt
r
und entfernt|~
. Die Lösung enthält keine!&'/\-01?AEIKLMNPSTWZ`dmrwz{}|~
, keine Tabulatoren, keine Zeilenumbrüche und keine Leerzeichen.quelle
39. Python 2
Hinzugefügt
0
. Entfernt@^
. Verwendet weder!^&'()/1?@AEIMNPSTWZdmntwz{}|~[] `
Tabulator noch Zeilenvorschub.Argument, das ohne Escape-Sequenzen ausgeführt werden soll:
Probieren Sie es online!
quelle
38. Matl
Hinzugefügt
q
. Entfernt0 <newline>
. Verwendet kein!&'()/1?AEIKLM0NPSTW{Z`dmntwxz}|~[]
, Tab, Newline oder Leerzeichen.Probieren Sie es online aus
quelle
q
x
, Sie haben es nicht entfernt, aber es ist eingeschränkt. Kannst du x am Ende des Kommentars hinzufügen? Die eingeschränkte Liste sagt auch, dass Sie nicht verwendenq
, so dass Sie das entfernen müssen.7, Python 2
Neu aufgenommen
_
. Entfernte Zeichen: tab undAEIU`
, und (nur um ein bisschen böse zu werden)0
und1
. Ansonsten nur eine Kopie der Antwort von Wheat Wizard (daher das Community-Wiki).Probieren Sie es online!
quelle
13. Standard ML (mosml)
Hinzugefügt
x
. Entfernt:r
. Enthält kein:;{}0`1AEIPQr
oder Tabulatorzeichen.Nachdem wir C-Sprachen so gut wie ausgeschlossen haben, wollen wir Python nachgehen. Diese Antwort ist ziemlich identisch mit Antwort 11.
quelle
14. Oktave
r
Newline und Leerzeichen hinzugefügt und entfernt. Die Lösung enthält keine{}:;`01AEIPQ
, keine Tabulatoren, keine Zeilenumbrüche und keine Leerzeichen.Basierend auf einer geschlossenen Formel (7) .
quelle
16. Oktave
Hinzugefügt
/
und entfernt * und Leerzeichen. Lösung enthält keine{}:;`*%01AEIPQ
, keine Tabulatoren, keine Zeilenumbrüche und keine Leerzeichen.Identisch mit Antwort 14 , nur ein direkter Angriff auf SML und Python: P
quelle
15. Standard ML (mosml)
Platz hinzugefügt und entfernt
%/
. Enthält weder{}:;`01AEIPQ
Tabulator noch Zeilenvorschub.quelle