Wenn Ihnen das gefällt, können Sie teilnehmen an:
Die monatliche Dyalog APL 2017 Code Golf Challenge
Erstellen Sie 12 Ausschnitte / Ausdrücke in derselben Sprache, die zu den Zahlen 0 bis 10 bzw. 42 führen, ohne jedoch literale Zahlen-, Zeichenketten- oder Zeichendaten zu schreiben.
Eingebaute Daten wie PI()
und ALPHABET()
sind in Ordnung, ebenso wie die Konstanten U, X, Y, Z und A von CJam und die Konstanten BLEND, CHORD, CENTER, BREAK und LINES von Processing.
Jeder Ausschnitt muss für sich stehen können, dh er darf nicht voneinander abhängig sein. Innerhalb eines einzelnen Snippets können Sie jedoch eine Variable zuweisen und diese frei verwenden, solange Sie sich direkt auf den Namen und nicht auf eine Zeichenfolge mit dem Namen beziehen.
Alle Snippets müssen zum Zeitpunkt der Übermittlung auf dem Computer des Absenders gültig sein (wie von SE gemeldet), dürfen jedoch nicht auf ungewöhnliche lokale Bedingungen wie die Anzahl der Dateien in einem Verzeichnis, das genaue Datum oder die Uhrzeit oder bestimmte Eingaben des Benutzers angewiesen sein .
Beispiele für gültige Snippets
3: INT(LOG10(YEAR(TODAY())))
weil es auf absehbare Zeit wahr bleibt
4: CUBICROOT(LEN(CHARACTERSET()))
weil ein 256-Buchstaben-Zeichensatz sehr verbreitet ist
8: SQRT(SYSTEMTYPE())
weil 64-Bit-Systeme sehr verbreitet sind
Beispiele für ungültige Snippets
5: LEN(USERNAME())
weil die meisten Benutzer "Admin" nicht als Login verwenden :-)
9: LOG10(SYSTEMMEMORY())
weil es nur auf Systemen mit genau 1 GB Arbeitsspeicher funktioniert
42: CODE("*")
weil es ein Zeichenkettenliteral enthält
Das Ergebnis jedes Snippets muss eine tatsächliche Zahl (value, int, float usw.) ergeben, die für weitere Berechnungen in derselben Sprache wie das Snippet verwendet werden kann, dh keine Textzeichenfolge, die diese Zahl darstellt.
Nur zeichenbasierte Sprachen erlaubt.
Score ist die Gesamtanzahl der Bytes aller 12 Snippets zusammen. Zeilenumbrüche, die die Ausschnitte trennen, werden nicht mitgezählt.
Beachten Sie, dass die oben genannten Regeln möglicherweise die Teilnahme einiger Sprachen verhindern, selbst wenn sie vollständig sind.
FAQ
F Können die Programme Eingaben akzeptieren?
A Ja, aber Sie dürfen nicht nur um Eingabe bitten und die entsprechende Nummer eingeben.
F Sind physikalische Ziffern (keine Daten) zulässig?
A Ja, z LOG10()
.
F Werden Symbole in Ruby als Literale gezählt?
A Ja.
F Beinhaltet die Punktzahl Zeilenumbrüche zwischen den einzelnen Ausschnitten?
A No.
Q Ist TI-BASIC "zeichenbasiert" genug, um gültig zu sein?
A Ja.
F Zählen falsch und wahr als Zahlenliterale?
A Nein, sie sind akzeptabel.
F Können wir ein Zahlenliteral verwenden, um eine Funktion aufzurufen, wenn dies der einzige Weg ist und die Zahl keinen Einfluss auf die Ausgabe der Funktion hat?
A Ja, wenn dies der normale Weg ist, Code in Ihrer Sprache zu schreiben.
F Meine Sprache geht davon aus, dass am Anfang jedes Programms / Ausdrucks ein [etwas] steht. Muss ich es einschließen, oder sollten meine Ausschnitte nur funktionieren, wenn sie in der Mitte eines Programms / Ausdrucks stehen?
A Sie sollten nur in der Mitte eines Programms / Ausdrucks arbeiten.
F Was ist mit Regex-Literalen?
A Verboten, außer für Sprachen, die nur reguläre Ausdrücke verwenden.
F Ist ein Codeteil akzeptabel, mit dem alle angegebenen Zahlen gedruckt werden können?
A Nein, sie müssen getrennt und voneinander unabhängig sein.
F Darf ich von einem Kesselschild wie int main() {}...
oder einem gleichwertigen ausgehen?
A Ja.
F Welche Ausgabedatentypen sind zulässig?
A Beliebiger numerischer Datentyp wie int, float usw.
F Muss ich das Ergebnis jedes Snippets ausdrucken?
A Nein, es reicht aus, das Ergebnis für eine spätere Verwendung zur Verfügung zu stellen.
F Sind voreingestellte Variablen zulässig?
A Ja, und sie werden für jedes Snippet zurückgesetzt (falls geändert).
F Werden π und e als Zahlenliterale betrachtet?
A Nein, Sie dürfen sie verwenden.
F Kann ich 4 und 2 für 42 in verschiedenen Zellen zurückgeben?
A Nein, sie müssen als eine Nummer verbunden sein.
Q Bytes oder Zeichen?
A Bytes, aber Sie können eine beliebige Codepage auswählen.
F Können konstante Funktionen und voreingestellte Variablen wie J's 9:
, Actually's 9
und Pretzel's 9
verwendet werden?
A Ja, wenn der Wortschatz endlich ist (19 für J, 10 für Actually und Pretzel).
Antworten:
Hexagony , 13 Bytes
Probieren Sie es online!
In Hexagony,
0
durch9
sind Funktionen , die die aktuellen Speicher mit 10 multiplizieren, und dann die Zahl durch die Funktionsnamen dargestellt hinzuzufügen. Daher ist das erste Snippet leer, da die Erinnerungen mit beginnen0
.Wenn zum Beispiel der aktuelle Speicher ist
65
, wird durch Ausführen der Funktion3
der aktuelle Speicher erstellt653
.(Zu den Downvotern: stimmen Sie alles ab, was Sie wollen; ich bin bereit.)
quelle
Funktion , 1222 Bytes
Abgesehen von numerischen Literalen gibt es zwei Möglichkeiten, wie ich in Funciton einen (beliebigen) Wert erzeugen kann: stdin- und lambda-Ausdrücke. Stdin ist eine einzelne Box, während ein vollständiger Lambda-Ausdruck mehr Syntax erfordert, also gehe ich mit stdin. Obwohl stdin alles sein kann, funktionieren alle folgenden Funktionen unabhängig davon, welche Eingabe bereitgestellt wird.
Alle hier verwendeten Bibliotheksfunktionen existierten, bevor die Herausforderung veröffentlicht wurde.
0 (40 Byte in UTF-16)
Hierbei wird die Raw-Syntax für Kleiner als verwendet. Ein Wert ist niemals kleiner als er selbst, daher ist das Ergebnis 0.
1 (52 Byte in UTF-16)
⌑
Gibt eine Lazy-Sequenz zurück, die ein einzelnes Element enthält, undɕ
zählt die Anzahl der Elemente. (Die Lazy-Sequenz ist so faul, dass dieses Snippet überhaupt nicht stdin auswertet!)2 (70 Byte in UTF-16)
= 2¹.
ʂ
generiert alle Teilfolgen einer Folge und wandelt somit eine Folge von n Elementen mit 2ⁿ in eins um.3 (88 Bytes in UTF-16)
= 2 + 1.
♯
erhöht einen Wert um 1.4 (88 Bytes in UTF-16)
= 2².
5 (106 Bytes in UTF-16)
= 4 + 1.
6 (106 Bytes in UTF-16)
= 3 Fakultät.
7 (110 Byte in UTF-16)
= A (2, 2) (Ackermann-Funktion).
8 (118 Byte in UTF-16)
= 2 << 2 (Verschiebung nach links).
9 (128 Byte in UTF-16)
= 3 × 3.
10 (146 Byte in UTF-16)
= 5 + 5.
42 (170 Byte in UTF-16)
= 6 × (6 + 1).
quelle
JavaScript,
144141140138132125123 BytesMit Hilfe von @ edc65 , @Sjoerd Job Postmus , @DocMax , @usandfriends , @Charlie Wynn und @ Mwr247 !
quelle
-~-~Math.PI
und-~-~-~Math.PI
speichern (zweimal).(escape+NaN).length
. PS Heute habe ich gelernt, dass JavaScript wirklich seltsam ist ...NaN
eine Zahl ist, aber es ist buchstäblich keine Zahl: PMouse-2002 ,
27261714 BytesDie ersten Schnipsel drücken 0-10, und
ZR+
schiebt25
dann17
und25 17 + 42 =
ist1
.quelle
int main() {}...
es ausgeführt wird.CJam,
2724 BytesDanke an @ MartinBüttner für -1 Byte!
Probieren Sie es online!
quelle
Brainfuck, 70 Bytes
Jede Linie muss einzeln verlaufen.
Die ersten 10 sind selbsterklärend: Mit jedem Plus erhöhen wir den Wert der Zelle.
Die 42 ist viel komplexer. Es basiert auf der Tatsache, dass die meisten Brainfuck-Interpreter 8-Bit-Zellen verwenden, was bedeutet, dass alle Operationen auf ihr modulo 256 ausgeführt werden. Die
--
Zellen # 0 bis 254 werden gesetzt. Dann geben wir eine Schleife ein, die ausgeführt wird, bis Zelle # 0 0 ist. Jede Iteration Fügt 1 zu Zelle 1 und 6 zu Zelle 0 hinzu. Diese Schleife wird 43-mal ausgeführt, also ist Zelle 1 43. Schließlich subtrahieren wir 1 von Zelle 1, um sie zu 42 zu machen.Unter http://esolangs.org/wiki/Brainfuck_constants habe ich die effizienteste 42 gefunden
quelle
Dunkelheit ,
339303 BytesHier scheint die Dunkelheit wirklich . Kapiert? : ~)!
Ohne Drucken (ersetzt das Leerzeichen
\s
in der ersten Zeile durch, da es sonst nicht angezeigt wird):Mit druck:
Jede Zeile muss in diesem Fall einzeln ausgeführt werden, da das Programm im Licht (ein Leerzeichen) endet. Es ist jedoch möglich, dies im selben Programm in eine oder mehrere Zeilen zu schreiben.
Die reguläre Dunkelheit (█) erhöht ein Register um 1, und der Befehl (eine Art Minidunkelheit) gibt den Inhalt des Registers aus.
quelle
Perl 5,
86757166 BytesAlle
^F
s sind literale Steuerzeichen (0x06 in ASCII) und daher ein einzelnes Byte.Danke an msh210 für das Speichern von 11 Bytes und Dom Hastings für 9 Bytes!
quelle
!$[+ord$/ # -1 + 10
- Ich verstehe nicht. In Zeile 2 sagen Sie, dass!$[
Sie 1 erhalten, nicht −1, also gibt dieses Snippet 11.MATL, 30 Bytes
H
,I
UndK
sind vordefinierte Konstanten für 2, 3, und 4 (wiepi
).O
undl
sind Funktionen, die eine Matrix aus Nullen (O
) oder Einsen (l
) zurückgeben. Die Standardgröße ist 1x1.:
macht einen Vektor unds
summiert ihn,K:s
macht also einen Vektor von 1 bis 4 und summiert ihn, um 10 zu erhalten. IstYq
die n-te Primzahlfunktion, soKYq
ist die 4. Primzahl, 7.quelle
Yq
Funktion (und ihre Implementierung) war ein sehr netter Vorschlag von Ihnen :-)IK+
würde für 7 genauso gut funktionieren, aber es ist ein bisschen zu langweilig: PProlog,
11399 BytesSchnipsel:
Kombiniert die mathematischen Konstanten e und pi auf unterschiedliche Weise in int.
Bearbeiten: Speichert 14 Bytes, indem Floats für 0-2 verwendet werden.
quelle
PHP,
15714591 BytesBeim ersten Posting auf Code Golf dachte ich, ich würde es versuchen. Ich werde mich irgendwann verbessern: P Wenn Sie offensichtliche (für Sie) Stellen sehen, an denen ich Zeichen speichern könnte, lassen Sie es mich wissen.
EDIT: Es wurde mir klar, dass ich die Semikolons nicht brauchte, da dies nur Schnipsel sind.
EDIT2: Danke an Blackhole für viele Vorschläge!
quelle
LC_ALL
für 0 (-1 Byte),DNS_A
für 1 (-3 Byte),LOCK_NB
für 4 (-3 Byte),LC_TIME
für 5 (-7 Byte),LOG_INFO
für 6 (-8 Byte),INI_ALL
für 7 (-5 Byte),…IMG_WBMP
Für 8 (-4 Bytes),SQL_DATE
für 9 (-9 Bytes),SQL_TIME
für 10 (-3 Bytes) undLOG_INFO*INI_ALL
für 42 (-11 Bytes). Somit werden insgesamt 51 Bytes eingespart! Diese Konstanten sind mindestens in PHP 5.6.1 unter Windows gültig.LC_ALL
abhängig vom Gebietsschema?setlocale()
der alle Kategorien von Gebietsschemas geändert werden. Aber der Wert der Konstante selbst ist natürlich unabhängig vom Gebietsschema :).Python 2,
191159158157156149146 BytesBei meiner allerersten Einsendung hoffe ich, dass ich alles richtig gemacht habe! Aufgrund der Zeit, die ich damit verbracht habe, gibt es für einige sicherlich eine bessere.
Vielen Dank an FryAmTheEggman!
quelle
True
dass es akzeptabel sein sollte, eine Redewendung für 1 zu verwenden, da ich nicht weiß, wann sie nicht den Ausschnitten entspricht.True is not 1
es bei allen Berechnungen, die auf 1 basieren, hilft! Bearbeiten Sie jetzt.#8 len(`id(id)`)
. Dann sind 8, 9 und 10 kürzer. Fügen Sie möglicherweise auch einen Hyperlink hinzu, um es online zu testen .len(`{()}`)
für 11 Bytes erhalten, und das gibt Ihnen 7 bis 10 kürzer.C #, keine Verwendung, 234 Bytes
Das ist viel langweiliger, als ich ursprünglich gedacht hatte. Ich hatte ziemlich abwechslungsreich Ideen, wie
new[]{true}.Length
undtrue.GetHashCode()
undtypeof(int).Name.Length
unduint.MinValue
etc., abernew int()
schlagen sie alle.quelle
var a = new int();
und danna
in jedem Snippet zu verwenden?using
Deklarationen verwendet.int a=-~-~new int();a<<a
PowerShell, 147 Byte
Diese werden verwendet
+
, um Dinge implizit in ganze Zahlen umzuwandeln. Die späteren Zahlen verwenden Enums aus den .Net Framework-Nicht-Fixierungen von PowerShell, die zufällig die richtigen Werte haben.-~-~-~
In JavaScript werden C # - und PHP-Antworten- -bnot - -bnot - -bnot
in PowerShell verwendet.x^y
Die in Perl-Antworten oderx**y
in Python oder JavaScript ES7 verwendete Potenzierung wäre[Math]::Pow($x,$y)
Konstanten e und Pi sind die zeichenlastigen
[Math]::E
und[Math]::PI
quelle
x^y
ist xor in JavaScript. JavaScript (ES7) hat**
für Exponenten. SourceDC , 35 Bytes
Um die Snippets zu testen, fügen Sie ein hinzu
f
, um den Stapel zu drucken und übergeben Sie diese Zeichenfolge andc
:quelle
E
undF
hier sind Ziffern (auch wenn sie größer sind als der Eingaberadix). Der Beweis dafür ist, dass sie sich zu Ziffern verbinden. zBF0
->150
. Sie können dasselbe Verhalten bei Dezimalstellen feststellen, wenn Sie den Eingabe- und Ausgaberadix ändern.TI-BASIC, 41 Bytes
0 ~ 10:
42
In TI-BASIC beginnen alle nicht initialisierten Variablen mit einem Buchstaben bei 0 und
Xmax
(die rechte Fenstergrenze des Grafikbildschirms) bei 10.Die mathematische Konstante
π
ist ein Byte , abere
zwei Bytes.quelle
Python 2,
306275274 BytesIch benutzte die Tatsache, dass für jedes x (ganze Zahl und nicht 0) der Ausdruck
x/x
1 ist und spielte mit einigen bitweisen Operationen herum.Ich habe die Snippets so angepasst, dass sie immer noch den Anforderungen entsprechen (danke @nimi, das hat mir 24 Bytes erspart), aber Sie müssen sie manuell testen. Hier ist der Code und die Anzahl der einzelnen Bytes:
quelle
i=id(id);r=~i/i
Math ++, insgesamt 92 Bytes
0 (1 Byte):
a
1 (2 Bytes):
!a
2 (3 Bytes):
_$e
3 (4 Bytes):
_$pi
4 (7 Bytes):
_$e+_$e
5 (8 Bytes):
_($e+$e)
6 (9 Bytes):
_$pi+_$pi
7 (8 Bytes):
_($e*$e)
8 (9 Bytes):
_($e*$pi)
9 (10 Bytes):
_($pi*$pi)
10 (12 Bytes):
_$e*_($e+$e)
42 (19 Bytes):
_($pi+$pi)*_($e*$e)
quelle
Javascript (Browser Env),
155136130 BytesDank an:
@Ismael Miguel : 155 -> 136 -> 130 Bytes
quelle
-~[]+[]+-[]
, um zu produzieren10
. Es wird eine Zeichenfolge zurückgegeben, die jedoch weiterhin als Zahl verwendet werden kann. Außerdem können Sie-~(top+top.s).length
mit42
(-8 Byte) Ihre Abhängigkeit von Google Chrome berechnen und aufheben. Um mehr als 3 Bytes zu sparen, verwenden Sie(P=Math.PI)*P>>+[]
, um 9 zu berechnen.~(~[]+[]+-[])
generieren9
. Das sollte ein paar Bytes mehr reduzieren.+[12]
gibt12
und+[1, 2]
gibtNaN
. Ich hasse JS[1,2,3]
=>"1,2,3"
und Zeichenfolgen in Zahlen wie"12"
=> umgewandelt.12
Wenn die Zeichenfolge jedoch nicht aus Ziffern besteht, wird die Umwandlung zurückgegebenNaN
.+[1,2]
wandelt in eine Zeichenkette dann eine Zahl um, aber die Zeichenkette enthält ein Komma, so"1,2"
wirdNaN
.Im Ernst,
3933 BytesSachen in Klammern sind Erklärungen:
Hexdumps von Programmen:
Danke an quintopia für 6 Bytes!
quelle
HlPD
Speichert 2 Bytes auf 42 undQlP
spart ein Byte auf 7 undQlª
spart ein Byte auf 9 undQl╙
spart ein Byte auf 8. Ich denke, das reduziert sich ernsthaft auf insgesamt 33 Bytes, was Pyth bindet.Gleichstrom, 42 Bytes
Ergebnisse
Es gibt nicht viele Möglichkeiten, mit dc neue Zahlen zu generieren. Ich benutze
O
: Ausgangsbasis, anfänglich 10;K
: Präzision, anfänglich 0;z
Stapeltiefe, anfänglich 0;Z
signifikante Ziffern des Operanden. Wir kombinieren diese mit den üblichen arithmetischen Operatoren.Testprogramm
quelle
Mathematica, 101 Bytes
Ich bin mir ziemlich sicher, dass einige davon nicht optimal sind. Diese runden Klammern sind sehr teuer.
Aus Gründen der Einheitlichkeit könnten die ersten beide auch sein
E-E
undE/E
natürlich, aber ich dachte , es recht geschicktes ist zu bekommen0
und1
aus einer Berechnung mit undefinierten Variablen.quelle
0
. Wenna
der Wert0
anschließend abgerufen wird, ist dies kein Problem, solange er bei dera/a
Auswertung nicht verwendet wird.Japt ,
343330 BytesDank @ThomasKwa 1 Byte gespart
Die verschiedenen Zeichen bedeuten Folgendes:
quelle
A-I
sind Variablen, die standardmäßig verschiedenen Nummern zugewiesen sind, wie oben gezeigt.A-F
sind 10-15 zugeordnet. Macht dies diese Variablen ungültig?Marbelous , 98 Bytes
Es ist nicht sonderlich aufregend, sondern basiert auf den
?n
Geräten, die jede Kugel in einen zufälligen Wert im Bereich von 0..n (einschließlich)?0
verwandeln. Ein Nebeneffekt davon ist, dass jede Kugel unabhängig von der Eingabe in eine 0 verwandelt wird. Ich denke, die Verwendung von Literalen ist zulässig, da der Wert das Ergebnis nicht beeinflusst und es in Marbelous keine andere Möglichkeit gibt, eine Funktion einmal aufzurufen.0:
1:
...
9:
10:
42
quelle
> <> 86 Bytes
ln;
lln;
llln;
lll+n;
lll:+n;
llll+n;
llll++n;
oderllll:+n;
lllll+n;
lllll:+n;
lllll++n;
oderllllll+n;
llll+:+n;
oderlll:l+*n;
llll*ll+*n;
Verlässt sich auf die Stapelgröße, um die Literale zu erhalten.
quelle
n
on each wahrscheinlich entfernen, da Funktionen in stapelbasierten Sprachen die Ausgabe für -11 Byte auf dem Stapel belassen können.;
insgesamt 22 Bytes entfernen und das Ende der am Ende der Zeile erreichten Funktion berücksichtigen, aber es ist ein wenig mehrdeutig, da><>
es keine Out-of-the-Box-Funktionen gibt.><>
müssen Ihre Funktionen zusätzlich zu ihren Parametern eine Rücksprungposition (x & y) auf dem Stapel akzeptieren, damit diese bei der Berechnung nicht im Wege stehen (dies ist[
in diesem Zusammenhang nützlich). Nach Beendigung der Ausführung in die Rückkehrposition springen. Ich hatte vor einer Weile einen POC gemacht , schau mal, ob du interessiert bist;
. Der Grund, warum ich sage, dass ich fortfahren soll,;
ist, dass es sonst keine Möglichkeit gibt, anzugeben, wann die Funktion ohne a endet.
. Die meisten Leute scheinen dies für fair zu halten, aber ich könnte versuchen, hier einen bestimmten Meta-Post zu schreiben , wenn Sie sich Sorgen machen.><>
Snippets.
die beste Methode ist, um an der Definition der Funktion festzuhalten, wie sie in der am besten bewerteten Antwort des Metapostings beschrieben ist. Ich bin jedoch der Meinung, dass dies;
eine gute Alternative ist, die weniger Erklärung erfordert.MS Excel-Formeln,
163151150143 BytesNicht gerade eine Programmiersprache, aber hier geht es ...
PI()
wird in den meisten Fällen verwendet, da dies der kürzere (mir bekannte) Weg ist, einen numerischen Wert einzuführen, ohne ein Zahlen- oder Zeichenfolgenliteral zu verwenden.N
konvertiert verschiedene Dinge (einschließlich Boolescher Werte) in Zahlen undT
konvertiert verschiedene Dinge in Text.TYPE
gibt 2 für ein Textargument und 4 für ein Boolesches Argument zurück.TRUNC
verwirft gebrochene Teile (dh rundet positive Zahlen ab),EVEN
rundet auf die nächste gerade Zahl undODD
rundet auf die nächste ungerade Zahl auf.CODE(-PI())
ist der ASCII-Code des ersten Zeichens der Umwandlung in Text von -π, dh 45 (für "-").BEARBEITEN: Gleichheitszeichen aus der Byteanzahl (-12!) Entfernt - wie von N comments in den Kommentaren hervorgehoben, sollten sie nicht enthalten sein.
BEARBEITEN 2: Angenommen, der Rest des Arbeitsblatts ist leer, ist es möglich, einen Verweis auf eine leere Zelle als Null zu verwenden (ebenfalls vorgeschlagen von Nᴮᶻ), vorausgesetzt, wir schließen ein Minuszeichen ein (oder verwenden es in einem anderen numerischen Ausdruck), um das Problem zu lösen Mehrdeutigkeit eingeben.
quelle
=Z9
=
s, danke. In Bezug auf Ihren Vorschlag habe ich absichtlich auf Zellreferenzen verzichtet, um sicherzustellen, dass die Formeln unabhängig vom Tabelleninhalt sind - wenn sieZ9
einen Text enthalten,=Z9
wird keine Null mehr zurückgegeben. Ich beschloss, nichts von dem Tisch anzunehmen.Z9
Auf einem leeren Blatt befindet sich ein leerer Wert, der0
in vielen Fällen konvertiert wird, aber möglicherweise in""
(leere Zeichenfolge) konvertiert wird, wenn er in einigen Ausdrücken verwendet wird - ähnlich wie eine nicht initialisierte VBA-Variante - entspricht also nicht unbedingt0
. Beispielsweise= 0&"a"
wird ausgewertet,"0a"
aber= Z9&"a"
ausgewertet"a"
. Dies kann jedoch gelöst werden, indem-
der Referenz eine Unäre hinzugefügt wird (wodurch sie - genau wie in VBA - numerisch sein muss). So-Z9
kann als Null verwendet werden. Ich habe gerade die Antwort aktualisiert. Danke noch einmal.DUP , 68 Bytes
Try it here.
Es gibt viele Möglichkeiten, dies zu tun, aber ich missbrauche den Rückgabestapel für diesen.
Erläuterung
Um dies vollständig herauszufinden, müssen Sie das Verhalten von DUP in Bezug auf Lambdas verstehen. Anstatt das Lambda selbst auf den Stapel zu legen, legt es die aktuelle IP tatsächlich auf den Stapel, wenn das Lambda erkannt wird. Das kann die ersten 3 Schnipsel erklären, bei denen es sich um Lambdas handelt.
Die nächsten Snippets verwenden den Rückgabestapel. Wenn
!
ausgeführt wird, wird die aktuelle IP auf den Rückgabestapel verschoben, und der obere Rand des Stapels wird als neue IP festgelegt, um die Lambda-Ausführung zu starten.)
Fügt eine Zahl aus dem Rückgabestapel in den Datenstapel ein.Das ist so ziemlich genug, um den Rest der Schnipsel zu erklären. Wenn Sie es immer noch nicht bekommen, denken Sie daran, dass der StepKnopf ziemlich praktisch ist!
quelle
05AB1E,
403824 Bytesquelle
Y·
mehr Stack-clean ist alsYx
,X
kann anstelle verwendet wirdº
hier (es standardmäßig1
,º
bedeutetlen(stack)>1
, so Default es nicht zu irgendetwas). Außerdem ist Ihr Bytecount 24, nicht 35 (CP-1252, Zeilenumbrüche zählen nicht, wenn es sich um separate Ausschnitte handelt).₆t
jetzt 6 sein (Taste 36, Quadratwurzel), um ein Byte zu speichern ( online ausprobieren ).D1ffe7e45e , 112
Jede Zeile ist ein anderes Snippet.
Die Zahlen im Programm zählen nicht als Zahlenliterale, da sie nur als Befehle verwendet werden.
Das letzte kann definitiv mehr golfen werden.
EDIT: Ich habe den Interpreter zum Laufen gebracht und alle Schnipsel funktionieren. Wenn Sie selbst testen möchten, fügen Sie
0f0f
am Ende des Snippets hinzu, damit das Programm beendet wird.quelle
+
in Brainf ** k). Ich dachte, da sie als Befehle und nicht als Zahlenliterale verwendet werden, zählt das immer noch. Ich werde die Antwort löschen, wenn dies nicht der Fall ist.Pyth,
353433 Bytes-1 Byte von @Mimarik
Für einige Programme gibt es eine Reihe von Möglichkeiten.
0, 1 Byte
1, 2 Bytes
2, 3 Bytes
3, 3 Bytes
4, 3 Bytes
5, 4 Bytes
6, 3 Bytes
7, 4 Bytes
8, 3 Bytes
9, 2 Bytes
10, 1 Byte
42, 4 Bytes
All dies beinhaltet entweder grundlegende double (
y
) -, +1 (h
) - und -1 (t
) -Befehle oderl
(Länge eines Strings). Die Z-Variable wird auf Null initialisiert.Für 5
b
wird ein Zeilenumbruchzeichen initialisiert. Backtick ergibt"\n"
(einschließlich der Anführungszeichen, und die Länge dieser Zeichenfolge beträgt 4.Probieren Sie sie hier aus !
quelle
yhyT
. (Ich habe die Bearbeitung gemäß meta.codegolf.stackexchange.com/questions/1615/… abgelehnt. )