Schreiben Sie eine Funktion, die fünf Zeilen enthält.
Wenn Sie die Funktion so ausführen, wie sie ist, sollte sie 0 zurückgeben.
Wenn Sie eine der fünf Zeilen entfernen und die Funktion ausführen, sollte Ihnen mitgeteilt werden, welche der Zeilen entfernt wurden (z. B. wenn Sie die letzte Zeile entfernen, sollte sie 5 zurückgeben).
Kürze, Neuheit und Eleganz verdienen alle Beachtung. Die Lösung mit der höchsten Bewertung (nach einer angemessenen Zeitspanne) gewinnt.
popularity-contest
function
jawns317
quelle
quelle
Antworten:
Rubin
Magische Zahlen meiden, da es kein Code für Golf ist.
Aus jeder Zeile wird eine eigene Nummer entfernt
1^2^3^4^5
. Es ist Ruby, also definiert die letzte Zeile den Rückgabewert.quelle
JavaScript (
13477696560 Zeichen)→ Live-Demo ←
rufen Sie diese Funktion mit n = 10 auf.
Vorherige Versionen:
65 Zeichen
(muss mit n = 15 aufgerufen werden)
69 Zeichen
(muss mit n = 15 aufgerufen werden)
77 Zeichen
134 Zeichen
nicht golfen
quelle
var a
nach demreturn
? Theoretisch sollte es nicht erreicht werden.Python
Wenn Parameter erlaubt sind, funktioniert dies:
quelle
R
Die Funktion verwendet eingebaute "Konstanten" und weist jedem von ihnen einen anderen Wert zu. Wenn alle diese Variablen gleich dem neuen Wert sind, gibt die Funktion 0 zurück. Logische Werte werden aufgrund der mathematischen Operatoren in numerische umgewandelt. Die Klammern um die 4. Zeile ermöglichen die sichtbare Rückgabe des Ergebnisses (wenn es sich um den letzten Befehl handelt).
quelle
Lua 5.2+
55 Zeichen im Funktionskörper ohne Zeilenumbrüche. Ich konnte mir nichts Besseres einfallen lassen als das:
In der Hoffnung, zusätzliche Punkte für den Missbrauch von Kommentaren zu bekommen: P
Der Grund, warum es in 5.1 nicht funktioniert, ist, dass verschachtelte Elemente
[[]]
entfernt wurden. In 5.1 wird ein Kompilierungsfehler angezeigt, anstatt wie in 5.2 ignoriert zu werden.return 7-2-5
return 1
return 7-5
return 7-2-2
return 7-2-1
return 7-2
quelle
Rubin
Ich habe es mit bitweisen Operationen versucht und dann festgestellt, dass es eine viel einfachere Lösung mit Listen gibt! Diese Herausforderung wird am besten von einer Programmiersprache bewältigt, die automatisch den zuletzt angezeigten Wert zurückgibt, z. B. Ruby.
quelle
Befunge hat keine expliziten Funktionen, aber hier ist, was ich eine Funktion in Befunge nennen würde:
Die erste und letzte Zeile sind Funktionsanfang und Funktionsende. Es "kehrt" am ehesten zurück, dh es legt den korrekten Wert auf den Stapel.
quelle
Neue Antwort
Ich habe eine andere Lösung gefunden. Das ist so schlimm, ich mochte die Mathematik so sehr. Diese Lösung verwendet Rekursions- und globale Variablen (yuck!), Um festzustellen, ob jede Zeile ausgeführt wurde oder nicht. Ich wollte etwas anderes als die anderen Lösungen machen, daher ist das nicht sehr elegant, aber es funktioniert einwandfrei :)
PHP
Ich habe diese Herausforderung wirklich genossen, danke! :)
Alte Antwort
Ich habe es mit Mathe gelöst. Wenn jede Variable als unbekannt angesehen wird und wir eine Deklaration pro Zeile durchführen, gibt es fünf Unbekannte und fünf Codezeilen: Dies führt uns zum folgenden 5x5-System:
Sobald ich die Werte gefunden hatte, habe ich sie fest codiert und einige grundlegende Dinge hinzugefügt.
PHP
Hinweis: Die alte Antwort funktioniert nicht, wenn sie unverändert bleibt.
quelle
Bienenwachs , 86 Bytes
Probieren Sie meinen ersten erfundenen Esolang aus. Nach anfänglicher Verwirrung stellte ich fest, dass die Lösung so einfach ist.
Erläuterung:
Bienenwachsprogramme arbeiten auf einem 2D-Sechseckgitter. Programme werden in einem rechteckigen Format gespeichert.
wird gespeichert als
Die Anweisungen zum Bewegen in bestimmte Richtungen lauten:
Kurze Erklärung
_1 p
Erstellen Sie eine IP-Adresse, fügen Sie 1 hinzu und leiten Sie die IP-Adresse in Zeile 2 um_^v>~2+p
Erstellen Sie eine weitere IP-Adresse, falls Zeile 1 fehlt. Verlangsamen Sie die IP-Adresse, um sicherzustellen, dass die IP-Adresse von Zeile 1 voransteht. Fügen Sie dann 2 hinzu und leiten Sie sie zu Zeile 3 weiter> >~3+p
Addiere 3 und leite dann zu Zeile 4 um> >~4+X@7~8+~@$^^{;
Addiere 4, setze dann den 2. Stapelwert auf 15, dann den oberen und zweiten XOR-Stapelwert, verlangsame IP (um sicherzustellen, dass IP in Zeile 5 voraus ist, falls Zeile 5 existiert) und gebe das Ergebnis aus, beende dann das Programm.> >~5+@7~8+~@${;
Addiere 5 und mache dann dasselbe wie in Zeile 4, mit Ausnahme der Verlangsamung.Grundsätzlich berechnet das Programm nur eine Summe xor 15
Die zusätzlichen
>
Zeilen 3 bis 5 stellen lediglich sicher, dass bei Fehlen einer der Zeilen 2 bis 4 die IP-Adresse weiterhin ordnungsgemäß umgeleitet wird und das Programm nicht verlässt.Sie können meinen in Julia geschriebenen Bienenwachs-Interpreter aus meinem GitHub-Repository klonen
Die Readme-Datei auf GitHub ist aktueller und besser strukturiert als die Esolangs-Seite.
quelle
MuPAD, 57 Zeichen
quelle
Gemeinsame LISP:
NB: Endeklammern in einer eigenen Zeile zu haben, wird als schlechter Stil angesehen, aber da es andere Sprachen gibt
end
und}
ich davon ausgehe, dass dies zulässig ist.quelle
Bash, 131 Zeichen
Bis zur 5. Zeile ist alles ganz einfach. Dann muss erkannt werden, ob die letzte Zeile weg ist. Dies nutzt die zulässigen Funktionsparameter aus, indem es sich selbst einmal rekursiv aufruft, um seinen eigenen Erfolgswert zu testen, wenn in Zeile 5 ein Fehler gemeldet wird, und wenn Zeile 5 entfernt wird, kehrt
5
stattdessen Zeile 4 zurück .(Hinweis: Es ist auf mindestens 131 Zeichen beschränkt, wenn alles außer der Funktion entfernt wird, Leerzeichen entfernt werden und / bin / bash in / bin / sh geändert wird.)
quelle
Javascript
quelle