Herausforderung:
Ihre Aufgabe ist es, so viele Programme / Funktionen / Schnipsel wie möglich zu schreiben, wobei jedes eine ganze Zahl ausgibt / ausgibt / zurückgibt. Das erste Programm muss die Ganzzahl ausgeben 1
, das zweite 2
und so weiter.
Sie können keine Zeichen zwischen den Programmen wiederverwenden. Wenn das erste Programm also: lautet x==x
, dürfen Sie die Zeichen nicht x
und =
in keinem der anderen Programme erneut verwenden. Hinweis: In einem Programm darf ein Zeichen mehrmals verwendet werden.
Wertung:
Der Gewinner ist die Einsendung, die am höchsten zählt. Bei Stimmengleichheit gewinnt die Einsendung, die insgesamt die geringste Anzahl von Bytes verwendet hat.
Regeln:
- Sie können nur eine Sprache für alle ganzen Zahlen verwenden
- Schnipsel sind erlaubt!
- Damit es fair bleibt, müssen alle Zeichen mit einem einzigen Byte in der von Ihnen gewählten Sprache codiert werden.
- Die Ausgabe muss dezimal sein. Sie können es möglicherweise nicht mit wissenschaftlicher Notation oder einem anderen alternativen Format ausgeben. Die Ausgabe von floats ist in Ordnung, solange alle Ziffern hinter dem Dezimalpunkt angezeigt werden
0
. Also4.000
wird angenommen. Ungenauigkeiten aufgrund von FPA werden akzeptiert, sofern sie nicht in der Ausgabe angezeigt werden. ans =
, führende und nachfolgende Leerzeichen und Zeilenumbrüche usw. sind erlaubt.- Sie können STDERR ignorieren, solange die korrekte Ausgabe an STDOUT zurückgegeben wird
- Sie können die Ganzzahl in STDERR ausgeben, jedoch nur, wenn STDOUT leer ist.
- Symbolunabhängige Sprachen (z. B. Lenguage ) sind nicht zulässig
- Buchstaben unterscheiden zwischen Groß- und Kleinschreibung
a != A
. - Die Programme müssen unabhängig sein
- Leerzeichen können nicht wiederverwendet werden
- Sie müssen in der Ausgabe ASCII-Ziffern verwenden
Erklärungen sind erwünscht!
number
code-challenge
restricted-source
Stewie Griffin
quelle
quelle
#include <iostream>
in C ++ kein weiteres Boilerplate-Zeug. Sie tun müssenfrom numpy import *
. Hinweis: Ich bin kein Programmierer, daher kenne ich nicht alle Nuancen. Wir können im Chat diskutieren, wenn etwas unklar ist :)Antworten:
JavaScript (ES7), Punktzahl 17, 176 Bytes
Sie sagten, es könne nicht gemacht werden, also habe ich es getan: D (dank der großen Hilfe von @FullDecent)
Unbenutzte Zeichen:
Ich glaube nicht, dass 18 möglich ist, aber ich sagte dasselbe über 17 ...
Erläuterung
JavaScript ist eine sehr schwach typisierte Sprache. Wenn Sie versuchen, eine mathematische Operation mit einem Wert auszuführen, der keine Zahl ist, wird JS sein Bestes tun, um ihn zuerst in eine Zahl umzuwandeln. Dies ermöglicht viele interessante Lösungen. Ich habe versucht, die Ziffern so weit wie möglich zu vermeiden, damit sie später verwendet werden können.
**
ist der Exponentiationsoperator in ES7. Wird die leere Zeichenkette zu einer Zahl gezwungen0
, so berechnet dies0 ** 0
, was1
laut JavaScript ist./~/
ist ein Regex-Literal und~/~/
kehrt zurück-1
. Dies ist also~(-1 / -1) / -1
=~(1) / -1
=-2 / -1
=2
. ( Dank an @ GOTO0 für die Idee)3
.4
.NaN
ist falsch, also!NaN
isttrue
das äquivalent zu1
. Der Ausdruck wird also1 - -1 - -1 - -1 - -1
=1 + 1 + 1 + 1 + 1
=5
.6
.7
.8
.9
.+[]
is0
gibt also[[]][+[]]
das erste Element von[[]]
(d. h.[]
) zurück und++
erhöht dieses auf1
. Dann+[+[]]
fügt man das Array hinzu[0]
, das zu einer Zeichenkette gezwungen wird und macht"10"
.11
. Ich hatte ursprünglich11&1111
für 3 und33/3
für 11 verwendet, bis mir wieder klar wurde, wie dumm ich bin ...12
und verwenden Sie sie.length
.2
s und>
s rumgespielt, um dieses zu bekommen. Ich hatte wieder Glück:222 >> 2
ist55
und55 >> 2
ist13
.14
in hex (0xE
) zu erstellen , aber wir brauchen die Ziffer0
woanders. Stattdessen stellen wir das Ergebnis von``^``
der Zeichenfolge voranxE
. Die leere Zeichenfolge, die zu einer Zahl gezwungen wird0
, ist0 ^ 0
=0
. Dann wird das Ergebnis mit der leeren Zeichenfolge XOR-verknüpft, wodurch beide Werte in Zahlen umgewandelt werden."0xE" ^ ""
ist14
.0XF
Ist ein hexadezimales Literal mit einem Wert von15
.C
aufCSS == CSS
(alsotrue
). Dann nehmen wir das Ergebnis und führen es<< C
viermal aus, was im Grunde genommen mit multipliziert1
wird2 ** 4
.555...555%55
eine Zahl zurückgegeben werden kann, die nicht0
oder ist5
. Ich hatte sehr viel Glück, als ich hier herumspielte.Strategien, die mit vielen Zahlen funktionieren würden:
-!NaN
würde auf jeder Nummer funktionieren (derzeit5
), obwohl es sehr schnell groß wird.~/~/
würde auf jeder Nummer funktionieren (derzeit2
), obwohl es sehr schnell sehr groß wird .+[]
würde auf jeder Nummer funktionieren (derzeit10
), obwohl es auf10
oder bei weitem am einfachsten ist11
..length
würde auf einer beliebigen Zahl arbeiten.`${-``}xE`-``
würde auf so ziemlich jeder Zahl arbeiten, wenn Sie es richtig machen.C<<C
würde mit jeder Potenz von zwei (derzeit16
) oder mit jeder Int überhaupt funktionieren , wenn Sie sie einschließen|
.quelle
window.
Eigenschaften wie zu verwendendefaultPixelWidth
, aber alle scheinen entwederl
oder zu enthaltene
. Sie können eine weitere 0 von bekommen,URL | URL
aber es hilft nicht viel.+ - * ~ < x X length
1 2 3 4 5 6 7 8 9 + - * ~ < x X length
. Bevor wir es also lösen, können wir nicht 18Jelly , 47 ganze Zahlen, 519 Bytes
Jede Zeile ist ein eigenes, vollständiges Programm.
Probieren Sie es online! (Beinhaltet Testsuite und Kreuzungsprüfer)
Wie es funktioniert
Jedes vollständige Programm ohne Befehlszeilenargumente führt seine Hauptverknüpfung (in der letzten Zeile definiert) niladisch aus, dh ohne Eingabe. Wenn das erste Glied in der Kette ein Nullglied ist, wird es verbraucht und aufgerufen, und sowohl das Argument des Hauptglieds als auch der Rückgabewert werden auf das Ergebnis gesetzt. Wenn das erste Glied in der Kette eine Monade oder eine Dyade ist, wird es nicht verbraucht und stattdessen das implizite Argument und der Rückgabewert 0 verwendet. In beiden Fällen wird der Rest der Kette monadisch ausgeführt.
Gelee zerquetscht seine Ausgabe in mehreren Fällen. Insbesondere wird ein Singleton-Array ohne die umgebenden Klammern gedruckt, sodass 42 und [42] und nach dem Drucken nicht mehr zu unterscheiden sind. Wir werden dies bei mehreren Gelegenheiten verwenden.
1 - 10
Das Exists- Atom prüft, ob der Rückgabewert 0 zum Argument 0 gehört . Er tut, so
e
gibt 1 .BI$
ist ein Quicklink, insbesondere eine monadische Kette, die durch die schnelle$
Gruppierung des binären AtomsB
und des inkrementalen Atoms gebildet wirdI
. Zusammen konvertieren sie eine Ganzzahl in das Array ihrer Ziffern in Basis 2 und berechnen dann die Vorwärtsdifferenzen der resultierenden Ziffern. Wenn das Array nur ein Element enthält, gibt es keine Vorwärtsunterschiede und es wirdI
ein leeres Array (falsch) zurückgegeben. Wenn es mindestens zwei ZiffernI
gibt, wird ein nicht leeres Array zurückgegeben (truey).Der Schnellzugriff verwendet
#
den vorherigen Schnellzugriff und wendet ihn auf 0 , 1, 2, ... an, bis genügend Übereinstimmungen gefunden wurden, und gibt das Array der Übereinstimmungen zurück. Der erforderliche Betrag wird berechnet durch⁼
, der den Rückgabewert / das Argument 0 mit sich selbst vergleicht und 1 ergibt . Somit gibt das gesamte Programm [2] zurück , die erste nicht negative Ganzzahl mit zwei Ziffern in Basis 2.⁾⁾⁾
ist ein String-Literal, insbesondere der String ⁾⁾ . Das Grade-Up- AtomỤ
sortiert seine Indizes nach ihren entsprechenden Werten. da beide Zeichen gleich sind, ergibt sich [1, 2] . Das resultierende Array wird mit bitweisem XOR verkleinert^/
, sodass das gesamte Programm 3 zurückgibt .ı
Initialisiert das Argument und gibt den Wert an die imaginäre Einheit i zurück .*
ist die Potenzierungs- Dyade, deren rechtes Argument standardmäßig das Argument des Hauptlinks ist.***ı
Berechnet also ((i i ) i ) i ≈ 4.81 + 0i , berechnet dasḞ
Atom ( Boden für reelle Argumente, Realteil für komplexe) den Realteil ( 4.81 )Ḟ
und ergibt dann Etagen 4 .Diese drei Programme bestehen aus einem einzigen Literal und tun genau das, was Sie erwarten.
Das Literal
.
ist eine Abkürzung für 0.5 und initialisiert Argument und Rückgabewert. Das rechte Argument des Ganzzahlteilungs- Dyads (:
) entspricht standardmäßig dem Argument für die Hauptverknüpfung.::::
Berechnet also 0,5 / 0,5 / 0,5 / 0,5 / 0,5 und ergibt 8 .Noch ein wörtliches Wort.
Das Atom all equal
E
gibt 1 zurück, wenn alle Elemente in seinem Argument gleich sind, und 0, wenn nicht. Ein ganzzahliges Argument z wird zu [z] heraufgestuft , daherE
wird 1 für das implizite Argument 0 zurückgegeben .Nun werden die Ausgangsatom druckt 1 bis STDOUT. Wir vergleichen dann 1 mit dem impliziten Argument 0 unter Verwendung des Atoms less than . Das Ergebnis ist (1 <0) = 0 und wird implizit gedruckt, wenn das Programm beendet ist.
Ȯ
<
11 - 20
Das Gitteratom versucht , eine optisch ansprechende Tabelle von seinem Argument zu machen. Für ein einfaches ganzzahliges Argument (hier: 0 ) wird es einfach in ein Array eingeschlossen. Das flache ungleiche Atom vergleicht das implizite Argument 0 mit dem Ergebnis rechts ( [0] ) und ergibt 1, da seine Argumente nicht gleich sind. Die Darstellung Atom druckt 1 bis STDOUT und gibt sein Ergebnis. Am Ende des Programms wird der endgültige Rückgabewert implizit gedruckt, sodass wir eine Ausgabe von 11 erhalten .
G
⁻
Ṙ
Das Selbst
`
verwandelt eine Dyade schnell in eine Monade, indem es sie mit identischen linken und rechten Argumenten aufruft. Zuerst=`
vergleicht die implizite Argument 0 mit sich selbst, wodurch man 1 .Das kartesische Produkt Atom
p
erwartet Listen als Argumente, so fördert die ganze Zahl 1 auf den Bereich [1, ..., 1] = [1] .p`
nimmt das kartesische Produkt von [1] und sich selbst und ergibt [[1, 1]] .Das eval- Atom
V
wandelt alle flachen Arrays (die nur Zahlen und Zeichen enthalten) in Strings um und wertet die resultierenden Strings als Niladic Jelly-Programme aus. [[1, 1]] wird zuerst in ["11"] umgewandelt , dannV
wird die Zeichenfolge ausgewertet und ergibt [11] . Noch einmal,V
macht dieses Array in „11“ , dann evals es ergeben 11 .Nun
×`
multipliziert man 11 mit sich selbst und erhält 121 . Das Dezimalatom verwandelt 121 in [1, 2, 1] , das eindeutige AtomQ
verwirft die zweite 1 undV
verwandelt erneut eine Ziffernliste in die Ganzzahl, die sich aus ihrer Verkettung ergibt, und gibt 12 zurück .~
ist das bitweise NICHT Atom. Mit der Zweierkomplementarithmetik bildet es ein Argument z auf ~ z = - (z + 1) ab .A
ist das Absolutwertatom , es bildet also - (z + 1) = z + 1 ab . Mit dem anfänglichen Rückgabewert 0 , der dreizehn Kopien~A
Rückkehr 13 .Die Konstante
⁷
enthält das Newline-Zeichen '\ n' und initialisiert das Argument und den Rückgabewert.Das unevale Atom
Ṿ
versucht, eine Zeichenfolgendarstellung seines Arguments z zu erstellen, sodass ein Jelly-Programm, das aus diesem Code besteht, z zurückgibt .Der erste Aufruf gibt pflichtgemäß die Zeichenfolge "" \ n "zurück , die ein Zeichenliteral ist. Der nächste Aufruf gibt "", "\ n" zurück - ein Paar Zeichenliterale. Der dritte und letzte Aufruf gibt "", "", ",," "," \ n "zurück - ein Fünffach der Zeichenliterale.
Schließlich ist der Fensterindex Atom
w
fördert sein rechtes Argument ‚\ n‘ auf die Zeichenkette „\ n“ und den ersten Index mit einem Teilausgang finden „\ n“ . Dies ergibt 14 .⁴
ist die Konstante 16 . Der Quicklink- Filterfalse each (ḟ€
) befördert sein linkes Argument 16 in den Bereich [1,…, 16] und durchläuft dann seine Elemente.Für jedes Element Z ,
ḟ⁴
ausgeführt wird , zuerst die Förderung z zu [Z] , dann werden alle Entfernen (falls vorhanden) Vorkommen von 16 . Dies ergibt das Array [[1], [2],…, [14], [15], []] , wobei das letzte Array leer ist, weil es 16 enthält .Schließlich wählt das maximale Atom [15] .
Ṁ
Das modulare Atom,
m
das mit den Argumenten x (Array) und y (Integer) aufgerufen wird, nimmt normalerweise alle | y | x- tes Element , beginnend mit dem ersten, wenn y> 0 , mit dem letzten, wenn y <0 . Wenn jedoch y = 0 ist , wird x mit seiner Umkehrung verkettet zurückgegeben.Das linke ganzzahlige Argument 0 wird zuerst zu [0] heraufgestuft . Die erste Kopie von
m
verkettet [0] mit sich selbst und ergibt [0, 0] . Die verbleibenden Kopien wandeln dieses Ergebnis in [0, 0, 0, 0] , dann [0, 0, 0, 0, 0, 0, 0] und schließlich [0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] .Zuletzt zählt das count- Atom,
ċ
wie oft das implizite Argument 0 im resultierenden Array vorkommt, und gibt 16 zurück .ṭ
ist das Tack- Atom und hängt sein linkes Argument an sein rechtes an. Daṭ
und die folgendenḍ
dyadisch sind, müssen alle Aufrufeṭ
das implizite Argument 0 als das richtige Argument übergebenṭ
. Der erste Aufruf gibt [0, 0] , der zweite [0, [0, 0] und der achte und letzte [0, [0, [0, [0, [0, [0, [0, [0, 0]]]]]]] .ḍ
ist das Teilbarkeitsatom ; Für die Argumente x und y wird 1 zurückgegeben. Ist dies nicht der Fall, ist x durch y teilbar und 0 .Ḅ
ist ein No-Op für Ganzzahlen, alsoḍḄ
testet 0 auf Teilbarkeit durch jede Ganzzahl im konstruierten Array. 0 ist für sich teilbar, daher erhalten wir [1, [1, [1, [1, [1, [1, [1, [1, 1]]]]]] .Das unbinäre Atom bearbeitet nun
Ḅ
flache Arrays. Für ein Paar [a, b] wird einfach 2a + b zurückgegeben . Wie bereits erwähnt,Ḅ
ist ein No-Op für ganze Zahlen: Ein ganzzahliges Argument c wird zu [c] heraufgestuft , und [c] in einer beliebigen Basis ist einfach c .Der erste Aufruf von
Ḅ
reduziert [1, 1] auf 3 und ergibt so [1, [1, [1, [1, [1, [1, [1, 3]]]]] . Der nächste Aufruf reduziert [1, 3] auf 5 , der nächste [1, 5] auf 7 usw., bis der neunte 17Ḅ
zurückgibt .Ṇ
ist das flache logische NICHT- Atom und ordnet das implizite Argument 0 zu 1 zu .+
Ist das Additionsatom, so+Ṇ
erhöht jede der achtzehn Kopien den vorherigen Rückgabewert (anfangs 0 ). Das gesamte Programm gibt also 18 zurück .C
ist das Komplementatom und bildet sein Argument z auf 1-z ab .N
ist das Negieren Atom und ordnet ihr Argument z auf -z . ZusammenCN
bildet z zu - (1-z) = z-1 , so dass die achtzehn kopiert das implizite Argument dreht 0 in -18 . Eine endgültige Anwendung derC
Ausbeuten1 - (-18) = 19
.Das Aufzählen Atom
Ė
aufzählt die Elemente in einem Array - Index-Wert - Paare zu schaffen. Das implizite Argument 0 wird zu [0]Ė
heraufgestuft und ergibt dann [[1, 0]] . Das Undezimalatom wandelt ein flaches Array von der Basis 10 in eine Ganzzahl um, was in diesem speziellen Fall [10] ergibt .Der zweite Aufruf von
Ė
transformiert [10] in [[1, 10]] , den der zweiteḌ
schließlich in [20] umwandelt .21 - 30
Der Schwanz Atom
ṫ
(a Dyade) Wählen Sie die Postfix seiner linken Argument , das auf dem Index beginnt (1-basiert und modular) in ihrer rechten Argument angegeben, ein linkes Argument ganzzahligen Förderung x zu [x] . Wenn sie mit den beiden Argumenten aufgerufen auf 0 ,ṫ
kehrt [0] .Das any-all- Atom
Ȧ
gibt 1 zurück, wenn sein Argument wahr ist und in keiner Tiefe Nullen enthält, andernfalls 0 . Hier verwenden wir es einfach als Identitätsfunktion, um das implizite Argument 0 zurückzugeben . Die Aufteilung in Atome unterteiltṣ
das linke Argument [0] in Vorkommen des rechten Arguments 0 , sodass hier [[], []] zurückgegeben wird .Das Atom Indizes
J
verwirft die Elemente des Rückgabewerts und ersetzt sie durch ihre Indizes, was in diesem speziellen Fall den Bereich [1, 2] ergibt .Ȧ
undṫ
beide funktionieren wie zuvor, so dass sie [1, 2] auf das Postfix reduzieren , das am letzten Index beginnt und [2] ergibt .In argumentlose Verbindungen, die konstant
⁸
hält [] . Dies ist ein nicht zu analysierender Nilad, dh er passt in keiner Weise in die Kette. Infolgedessen wird der vorherige Rückgabewert ( [2] ) an STDOUT ausgegeben und dann durch den Wert des Nullwerts ( [] ) ersetzt.Da [] falsch ist, wird
Ȧ
es in 0 umgewandelt . DasJ
Atom befördert 0 auf [0] und gibt dann die Liste seiner Indizes ( [1] ) zurück, die implizit gedruckt wird, wenn das Programm beendet ist.Noch ein wörtliches Wort. Repdigits scheinen der beste Ort zu sein, um sie zu verwenden.
Dies nutzt Jellys eingebaute Saitenkomprimierung. Die Indizes von @ und ṃ in Jellys Codepage sind 64 und 220, und Zeichenfolgenliterale können 250 verschiedene Zeichen enthalten . Daher wird zuerst die Ganzzahl 250 × 65 + 220 = 16470 berechnet .
16470 ist teilbar durch 3, daher codiert der Quotient 16470/3 = 5490 ein druckbares ASCII-Zeichen oder einen Zeilenumbruch. Davon gibt es 96 und 5490 = 96 × 57 + 18 , was bedeutet, dass wir das druckbare ASCII-Zeichen am 0-basierten Index 18 dekodiert haben , der '2' ist .
Wir haben 57 übrig , was auch durch 3 teilbar ist , also codiert der Quotient 57/3 = 19 = 96 × 0 + 19 druckbare ASCII-Zeichen am 0-basierten Index 18 , der '3' ist .
Dies lässt 0 ; Der Dekodierungsvorgang wird gestoppt. Die generierten Zeichen werden zu "23" verkettet
Das faktorielle Atom
!
wandelt das implizite Argument 0 in 1 um . Zwei Aufrufe des nicht- halbierten AtomsḤ
verwandeln 1 in 2 , dann 2 in 4 . Endlich!
berechnet 4! = 24 .In Abwesenheit von Befehlszeilenargumenten, die konstant
³
hält 100 . Zwei Aufrufe derH
Runden 100 in 50 , dann 50 in 25 .Die Konstante
Øa
enthält das Kleinbuchstaben. Das maximale AtomM
liefert alle Indizes maximaler Elemente, und da z der größte Kleinbuchstabe ist, ist das Ergebnis [26] .Sechsundzwanzig Kopien des verketteten Atoms
;
verketten den anfänglichen Rückgabewert 0 und sechsundzwanzig Instanzen des Standardarguments 0 und bilden ein Array mit 27 Nullen.¬
ist das logische NICHT- Atom, also;¬
hängt eine 1 an das Array von Nullen an. Das nächste¬
negiert alle Elemente im Array und lässt uns ein Array mit 27 Einsen und 1 Null zurück.ḅ
ist das Unbase- Atom und konvertiert ein Ziffern-Array von seinem linken Argument von der in seinem rechten Argument angegebenen Basis in eine Ganzzahl.ḅ¬
Konvertiert von Unary zu Integer, führt also einfach eine Summe aus. Für ein Array von 27 gibt dies 27 zurück .Der Index des Atoms
i
befördert sein linkes Argument 0 auf [0] und ermittelt dann den Index seines rechten Arguments 0 in diesem Array, was 1 ergibt .Das Range- Atom
r
konstruiert einen aufsteigenden oder absteigenden Bereich vom linken zum rechten Argument. Das richtige Argument ist das implizite Argument 0 , dies ergibt also [1, 0] . Ein zweiter Aufruf voni
findet den Index 0 in [1, 0] und ergibt 2 .ð
beginnt eine neue dyadische Kette. Da die vorhergehende Kette niladisch war, ist sowohl das linke als auch das rechte Argument dieser Kette gleich dem Rückgabewert der ersten Kette ( 2 ).c
in den Kombinationen Atom. Mit dem linken Argument 8 und dem rechten Argument 2 werden alle eindeutigen, ungeordneten 2-Kombinationen einer Menge von 8 Elementen gezählt, wobei 8C2 = 8! / (6! 2!) = 28 zurückgegeben wird .Die Konstante
⁶
enthält ein Leerzeichen und setzt Argument und Rückgabewert auf '' . Das Wort atomḲ
befördert das Zeichen '' in die Singleton-Zeichenfolge "" und teilt es in Leerzeichen auf, was [[], []] ergibt .Die Gruppe Atom
Ġ
Gruppen alle Indizes von gleichen Elementen. Da beide Elemente des letzten Rückgabewerts gleich sind, wird hier [[1, 2]] zurückgegeben . Das minimale Atom extrahiert ein minimales (einziges) Element dieses Arrays und liefert [1, 2] .Der Grad Atom
°
wandelt beiden ganzen Zahlen von Sexagesimalgrad in Bogenmaß, wodurch man 1 ° × 2π / 360 ° = π / 180 und 2 ° × 2π / 360 ° = π / 90 . Das inverse Atom nimmt die multiplikativen Inversen auf und ergibt 180 / π ≈ 57.3 und 90 / π ≈ 28.6 .Dann nimmt
Ṃ
noch einmal das Minimum und ergibt 28,6 . Schließlich wird das ceil AtomĊ
verwandelt 28.6 in 29 .Die Identität Atom
¹
liefert 0 für das implizite Argument 0 . Das um ein Atom aufgeteilteœṡ
Argument befördert beide Argumente (beide 0 ) zu [0] und teilt dann [0] um benachbarte Unterfelder auf, die gleich [0] sind . Dies ergibt [[], []] .Das Schiebefenster- Atom bildet
Ẇ
alle zusammenhängenden Unterfelder seines Arguments. Die erste Instanz transformiert [[], []] in [[[]], [[]], [[], []] , die zweite Instanz transformiert [[[]], [], [] , []]] in[[[[]]], [[[]]], [[[], []]], [[]], [[]], [[]], [ [], []]], [[]], [[]], [[], []]] .
Die Wahrheit Atom
T
listet alle Indizes der truthy Elemente. Keines der Arrays auf der ersten Ebene ist leer, daher ergibt dies [1, 2, 3, 4, 5, 6] . Das Upend- AtomU
kehrt dieses Array um und ergibt [6, 5, 4, 3, 2, 1] .Vier Kopien des Pop- Atoms
Ṗ
entfernen die letzten vier Elemente und lassen uns mit [6, 5] zurück . Schließlich wird das Produkt AtomP
wandelt diese Anordnung in 30 .31 - 40
ȷ
ist eine Abkürzung für 1 × 10 3 = 1000 . Die Quadratwurzel Atom½
ergibt 31,6 , was der Bereich AtomR
verwandelt sich in [1, ..., 31] . Schließlich wird der Schwanz AtomṪ
extrahiert das letzte Element, Return 31 .Die Länge Atom
L
fördert das implizite Argument 0 zu [0] , nimmt dann die Länge ergeben 1 .µ
startet eine neue, monadische Kette und das Ergebnis 1 wird zum Argument.Für die Argumente x und y ergibt das Divmod- Atom [x / y, x% y] . Jeder Aufruf hat y = 1 , das Ergebnis ist also immer [x, 0] .
d
Der erste Aufruf beginnt mit x = 1 und ergibt [1, 0] .
d
Funktioniert nur mit ganzen Zahlen, wird also in nachfolgenden Aufrufen vektorisiert. Der zweite Aufruf ergibt [[1, 0], [0, 0]] , der dritte [[[1, 0], [0, 0]], [[0, 0], [0, 0]] , und die fünfte und letzte ein Array der Tiefe 5, das eine einzelne Eins und 31 Nullen enthält.µ
startet erneut eine neue, monadische Kette, und das Array von zuvor wird zu seinem Argument. Das flache AtomF
entzweit dieses Array und ergibt ein flaches Array aus einer einzelnen Eins und 31 Nullen. Nimmt schließlichL
die Länge des resultierenden, zurückgegebenen 32 .Noch ein Neudigit, noch ein Literal.
Jede Instanz des Wrap- Atoms transformiert sein Argument z in [z] . Mit dem anfänglichen Rückgabewert 0 ergeben alle 34 Instanzen zusammen [[[[[[[[[[[[[[[[[[[]]]] ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] . Schließlich ist die Tiefen Atom
ŒḊ
berechnet die maximale Tiefe der resultierenden Anordnung, Return 34 .Das Fenster existiert Atom
ẇ
befördert beide Argumente (beide standardmäßig auf 0 ) auf [0] und testet dann, ob ** [0] ** als zusammenhängendes Subarray von [0] auftritt . Er tut, soẇ
gibt 1 .ɓ
beginnt eine neue dyadische Kette. Da die vorhergehende Kette niladisch war, ist sowohl das linke als auch das rechte Argument dieser Kette gleich dem Rückgabewert der ersten Kette ( 1 ). Die Kette verwendet zwei verschiedene dyadische Atome: Bitverschiebung nach links (æ«
) und bitweises ODER (|
).Eine dyadische Kette, die mit drei oder mehr Dyaden beginnt, nennt zunächst die erste Dyade mit den Argumenten der Kette. Hier ergibt sich 1 << 1 = 2 . Die sechs nachfolgenden Dyaden werden in Paare (sogenannte Gabeln ) gruppiert , wobei die Dyade ganz rechts zuerst mit den Argumenten der Kette und die ganz linke mit den vorherigen Rückgabewerten zu beiden Seiten aufgerufen wird.
Für erhalten
æ«æ«
wir 2 << (1 << 1) = 2 << 2 = 8 . Dannæ«æ«
berechnet 8 << (1 << 1) = 8 << 2 = 32 . Jetzt|æ«
bekommt uns 32 | (1 << 1) = 32 | 2 = 34 .Schließlich verhält sich der Trailing
|
wie ein Hook und wird mit dem vorherigen Rückgabewert als linkem und dem rechten Argument der Kette als rechtem Argument aufgerufen. Dies ergibt 34 | 1 = 35 .In Abwesenheit eines zweiten Arguments, die konstant
⁹
hält 256 . Das umgekehrte Atom fördert 256 auf das Array [2, 5, 6] und kehrt es zu ergeben [6, 5, 2] . Dann wird das Kopfatom extrahiert das erste Element und die quadratischen Atome kehren ** 6² = 36 *.Ḣ
²
Das Inkrement- Atom
‘
inkrementiert sein Argument um 1 , also setzen Sie‘‘‘
den anfänglichen Rückgabewert 0 auf 3 . Die folgende 0 ist eine nicht analysierbare Null, dh sie passt in keiner Weise in die Kette. Infolgedessen wird der vorherige Rückgabewert ( 3 ) an STDOUT ausgegeben und dann durch den Wert ( 0 ) des Nulladers ersetzt .Die folgenden 7 Kopien von
‘
wandeln diese 0 in 7 um , die implizit gedruckt werden, wenn das Programm beendet ist.Das Dekrement- Atom
’
dekrementiert sein Argument um 1 , sodass 38 Kopien den anfänglichen Rückgabewert 0 in -38 umwandeln . Die absolute Differenz Atomeạ
berechnet die unsigned Differenz zwischen -38 und dem impliziten Argumente 0 , Return 38 .-
ist eine Abkürzung für -1 und setzt das Argument und den Rückgabewert des Links auf -1 . Jedes_
ist eine Instanz des dyadischen Subtraktionsatoms , dessen rechtes Argument bei Fehlen standardmäßig -1 ist.Zuerst
-____-
berechnet (-1) - (-1) - (-1) - (-1) - (-1) = 3 . Das folgende -1 ist ein nicht analysierbarer Nullwert, daher wird der vorherige Rückgabewert ( 3 ) an STDOUT ausgegeben und dann durch den Nullwert ( -1 ) ersetzt.Als nächstes wird (-1) - (-1) = 0
-_
berechnet , wobei das Literal das linke Argument von setzt und den Rückgabewert als das rechte verwendet. Die folgenden neun Kopien von subtrahieren das Standardargument -1 vom Rückgabewert und ergeben 9 , was implizit gedruckt wird, wenn das Programm beendet ist.-
_
_
”(
ist ein Zeichenliteral und das Ordnungsatom sieht seinen Unicode - Codepunkt, wodurch man bis 40 .O
41 - 47
In Abwesenheit eines dritten Befehlszeilenarguments hat die Konstante den
⁵
Wert 10 . Das unlange AtomḶ
erzeugt einen 0-basierten Bereich, speziell [0,…, 9] für Argument 10 , zu beiden Seiten des Repeat-in-Place- Atomsx
. Letzterer vergleicht Elemente seines linken Arguments mit Wiederholungen seines rechten Arguments und wiederholt jedes der Elemente entsprechend oft. Mit [0,…, 9] als linkes und rechtes Argument erhalten wir somit null Nullen, eine Eins, zwei Zweien usw.Der Index in atom
ị
ruft das Element seines rechten Arguments an dem in seinem linken angegebenen Index ab. Mit dem linken Argument 10 (⁵
links davon) und dem rechten Argument [1, 2, 2, 3, 3, 4, 4, 4, 4,…, 9] (vorheriges Ergebnis) ergibt sich 4 .Auf die Kette bis zu diesem Punkt folgt ein nicht analysierbarer Nullwert
⁵
, sodass der vorherige Rückgabewert ( 4 ) auf STDOUT gedruckt wird, der Rückgabewert auf 10 gesetzt wird und der Rest der Kette wie gewohnt analysiert wird.Wie zuvor
⁵ḶxḶ
ergibt sich das Array [1, 2, 2, 3, 3, 3, 4, 4, 4, 4,…, 9] . Dieses Mal nennen wir das sortierte AtomṢ
für das Argument 10 , das 10 zu [1, 0] befördert , und sortieren es dann, um [0, 1] zu ergeben . Das dyadische Kopfatom ruft nun die Präfixe der Längen 0 und 1 aus dem Ergebnis auf der linken Seite ab und lässt uns [[], [1]] zurück . Beim Drucken bleibt nur 1 sichtbar.⁽
und die beiden folgenden Zeichen bilden ein numerisches Literal. Wenn j und k ihre Codepunkte in Jellys Codepage und (j, k) <(124, 250) sind , erhalten wir die Ganzzahl 1001 + 250j + k . Die Codepunkte von '{' , '}' und 'ʂ' sind 123 , 125 und 167 , sodass das linke Literal 1001 + 250 × 123 + 167 (= 31918) ergibt , während das rechte 1001 + ergibt 250 × 123 + 125 (= 31876) .Da die linke Ganzzahl weniger als doppelt so groß ist wie die rechte, ist das Ergebnis (… + 167)% (… + 125) = (… + 167) - (… + 125) = 167–125 = 42 .
Das Shuffle- Atom
Ẋ
ordnet die Elemente seines Arguments zufällig an. Ein numerisches Argument z wird zuvor in den Bereich [1,…, z] befördert . Für das implizite Argument 0 ist dieser Bereich leer undẊ
ergibt [] . Das all- AtomẠ
gibt 1 zurück, wenn alle Elemente seines Arguments wahr sind, andernfalls 0 . Da ein leeres Array nicht falsy Elemente enthält,Ạ
gibt 1 hier.Der Zip mit Atom
ż
(eine Dyade) nimmt die Argumente x und y und transponiert das Paar [x, y] . Für Ganzzahlen x und y ergibt dies einfach [[x, y]] , und dieses spezielleż
Argument, das mit den Argumenten 1 und 0 (dem impliziten Argument) aufgerufen wird , gibt [[1, 0]] zurück . Das dyadische Eval- Atomv
wandelt alle flachen Arrays (die nur Zahlen und Zeichen enthalten) im linken Argument in Zeichenfolgen um und wertet die resultierenden Zeichenfolgen als monadische Jelly-Programme aus, wobei das rechte Argument als Argument der Programme gilt. Seit ["10"]Besteht nur aus Literalen, ignoriert dies das richtige Argumentv
und führt einfach zu [10] .Die Kopie schnell
©
Attaches anv
und kopiert das Ergebnis in das Register. Später Vorkommen des Rückruf - Atom®
(a nilad) werden fetch [10] aus dem Register.Die nächsten drei Kopien der
żv
Arbeit wie zuvor, Zuordnung von [10] zu [10, 0] zu [100] zu… zu [10000] . Die Reihenfolge Atomọ
Tests wie oft sein linkes Argument durch seine rechten teilbar ist, so ist hier, berechnet sie die Reihenfolge von 10 (mit geholten®
) in 10000 = 10 4 , wodurch man [4] .Das Folgende
®
ist ein nicht analysierbarer Nullwert, daher wird der vorherige Rückgabewert ( [4] ) an STDOUT ausgegeben und dann durch den Nullwert ( 10 ) ersetzt. Wir bewerben uns alsẠ
nächstes und ergeben 1 . (Dies ist erforderlich, da an dieser Stelle eine Null gefolgt von einer Dyade analysiert werden kann.)żvżvżv
Hängt wie zuvor drei Nullen an den aktuellen Rückgabewert an und verwandelt 1 in [1000] . Schließlichọ®
berechnet die Größenordnung von 10 in 1000 = 10 3 , und 3 ist an stdout ausgegeben , wenn das Programm beendet ist .Noch ein Neudigit, noch ein Literal.
In erster Linie setzt das Literal
111111
das Argument und den anfänglichen Rückgabewert auf 111111 . Die anderen Läufe von1
sind ebenfalls Literale.l
ist das Logarithmusatom , das den Logarithmus seines linken Arguments mit der in der rechten angegebenen Basis berechnet. Wenn 111111 mit dem rechten Argument 11 aufgerufen wird , erhalten wir log 11 111111 ≈ 4.85 .Das Wort atom
K
wird nach dem Heraufstufen einer Ziffer / eines Zeichens z zu [z] an Leerzeichen mit einem Listenargument verbunden . Hier verwenden wir es einfach, um das Argument 111111 des Links in [111111] umzuwandeln . (Hier ist kein Array erforderlich, aber es sind keine Identitätsatome mehr vorhanden.) Das bitweise UND- Atom&
nimmt die Rückgabewerte auf beide Seiten, wandelt sie bei Bedarf in eine Ganzzahl um und berechnet ihr bitweises UND. In diesem speziellen Fall wird [4.85 & 111111] = [4 & 111111] = [4] zurückgegeben .Das Folgende
1111111
ist ein nicht analysierbarer Nullwert, daher wird der vorherige Rückgabewert ( [4] ) an STDOUT ausgegeben und dann durch den Wert des Nullwerts ( 1111111 ) ersetzt.K
verwandelt diese ganze Zahl dann in [1111111] . (Dies ist wiederum nicht wirklich erforderlich, aber eine Null gefolgt von einer Dyade wäre an dieser Stelle analysierbar.)Wie zuvor
l11
berechnet log 11 1111111 ≈ 5.81 , dann&
kehrt [5,81 & 111111] = [5 & 111111] = [5] .Dies ist das einzige Programm, das aus mehreren benutzerdefinierten Links besteht. Der letzte Link ist der Hauptlink und wird beim Start des Programms ausgeführt, die restlichen Links sind Hilfslinks. Das Quick
Ç
verweist immer auf den Link über dem aktuellen und führt ihn monadisch aus. EbensoÑ
bezieht sich der Quick immer auf den Link unter dem aktuellen (Wrapping Around) und führt ihn auch monadisch aus.Der Oberlenker besteht aus dem Paar Atom
,
- eine Dyade , die Argumente schaltet sich x und y in [x, y] - und die Summe AtomS
- ein monadisch, der ein Integer - Argument fördert z zu [z] und reduziert ein Array Argument durch Zusatz. Wenn der Link,SS
mit einem ganzzahligen Argument n aufgerufen wird , berechnet er Σ [n, Σn] = Σ [n, n] = 2n .Das mittlere Glied besteht aus den oben genannten Atomen, dem oben genannten schnellen
Ç
und dem unbedeutenden AtomỊ
- eine Monade, die 1 für numerische Argumente z mit -1 ≤ z ≤ 1 , aber 0 für alle anderen ergibt . Wenn SieỊ
ein ganzzahliges Argument n zweimal anwenden, wird es im Wesentlichen durch 1 ersetzt , da die Ausgabe des erstenỊ
(die Eingabe des zweiten) immer unbedeutend ist. Dieses Ergebnis wird dann mit dem Rückgabewert vonÇ
(mit dem Argument n aufgerufen ) gepaart und das resultierende Paar wird um reduziertS
. Insgesamt berechnen wirΣ [(| n | ≤ 1) ≤ 1, 2n] = Σ [1, 2n] = 2n + 1 .Mit diesen beiden Hilfsverknüpfungen kann die Hauptverknüpfung jetzt eine beliebige nicht negative Ganzzahl erstellen, indem sie ihre Binärziffern betrachtet. Bei einem anfänglichen Rückgabewert von 0
ÇÑÇÇÇÑ
berechnet die Kette das Endergebnis (((((0 × 2 + 1) × 2) × 2 + 1) × 2 + 1) × 2 + 1) × 2 = ((5 × 2 + 1) × 2 + 1) × 2 = 46 .Das nächste Primatom findet die kleinste positive Primzahl, die strikt größer als sein Argument ist. Mit dem anfänglichen Rückgabewert 0
Æn
berechnen fünfzehn Aufrufe die fünfzehnte Primzahl, also 47 .quelle
Brainfuck , Score 2,
25514410 Bytes... Ja, nicht die beste Idee, da ich nur 8 Charaktere (Tarpits gonna tarpit) zum Arbeiten habe, aber mal sehen, wie viel möglich ist.
Ich denke das ist alles was möglich ist. : PDiese Antwort demonstriert sechs der acht Zeichen, die Brainfuck verwendet. Die anderen beiden sind,
Eingaben und.
Ausgaben.Visualisiere es online!
Erläuterung
Jede Nummer wird erstellt und in der Startzelle auf dem Band gespeichert. Hängt stark von den umhüllenden Zellen ab, die nicht in wenigen Interpreten implementiert sind.
1 :
2 :
quelle
Neim , Score 38, 327 Bytes
Erläuterung:
0
.ℂ
, um 0 und 0 auf Ko-Primalität zu prüfen, was sie sind. Dies drückt 1. Dann erhalten wir die erste Primzahl mit𝐋
, was zu einer Singleton-Liste mit nur 2 führt. Dann erhalten wir das größte Element (𝐠
), das 2 als Zahl drückt. Dann wiederholen wir diesen Vorgang, bis wir die Liste erhalten[2 3 5 7 11]
. Danach𝐝
berechnen wir die Deltas und erhalten die Liste[1 2 2 4]
. Als nächstes𝐬
berechnen wir die Summe - das ist 9 - und berechnen dann den Exklusivbereich von 0 bis 9, woraus sich ergibt[0 1 2 3 4 5 6 7 8]
. Schließlich𝐬
wird erneut verwendet, um 37 zu erhalten.α
ist eine Konstante, die eine negative darstellt, und wir drücken sie wiederholt und subtrahieren sie (wiederum unter Ausnutzung der Tatsache, dass beim Versuch, auf eine leere Eingabe zu poppen, eine 0 gedrückt wird).Kann hier probiert werden
quelle
all characters must be encoded using a single byte in the language you choose
. Kodiert Neim diese Sonderzeichen in nur 1 Byte? Wie?1
noch nicht benutzt . Sicherlich können Sie das nutzen?Python 2, 15
Hier ist ein Anfang, auf der Suche nach mehr
Danke an Leo, dessen Tipp mir geholfen hat, auf 15 zu kommen
quelle
-~-~-~-~-~-~-~-~-~[[]==[]][[]<[]]
für 10 und0xD
für 13 für eine niedrigere Gesamt Byteanzahl''is''
true ausgewertet wird, verwenden, um eine andere Zahl zu erstellen?((()<((),))|(()<((),))<<(()<((),))|(()<((),))<<(()<((),))<<(()<((),)))<<(()<((),))
string.printable
c, j, k, l, s, v, w, y, z, A, B, C, D, E, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, !, #, $, &, ., :, ?, @, \\, `, {, }, \t, \r, \x0b, \x0c
Japt , 448 Bytes, 42 Punkte
Eine große Zusammenarbeit zwischen Shaggy , ETHproductions und Oliver .
Diese (nützlichen) Zeichen bleiben übrig:
Erklärungen
Ein paar Dinge, die ich über Japt wissen muss, bevor wir anfangen, die ich häufig benutzt habe. Erstens hat Japt 6 Variablen für die Eingabe reserviert, die Großbuchstaben sind
U-Z
. Wenn über diese Variablen keine Eingabe erfolgt, werden sie standardmäßig alle auf "" gesetzt0
. Die zweite Sache wird in diesem Tipp behandelt .Klicken Sie auf ein Snippet, um es im Online-Interpreter zu testen .
Wenn auf eine Zahl aufgebracht, die
v
dauert Methode eine ganze Zahl n als Argument und gibt 1 , wenn die Zahl von teilbaren n , 0 , wenn nicht. Wenn n nicht angegeben wird, wird standardmäßig 2 verwendet . 0 (der Standardwert fürU
) ist durch 2 teilbar , daher erhalten wir unsere 1 .Sehr ähnlich dem ersten. Wenn die
y
Methode auf eine Zahl angewendet wird, verwendet sie eine Ganzzahl n als Argument und gibt die GCD der beiden Zahlen zurück. Wenn n nicht angegeben wird, wird standardmäßig 2 verwendet . Da 0 durch teilbar ist 2 , GCD (0, 2) gibt uns unser 2 .Í
ist die Abkürzung fürn(2)
oder2
-this
. Weil wir keinen Eingang haben, fallen wirthis
auf0
, was dazu führt2-0 = 2
.à
gibt die Anzahl der Kombinationen von zurück[1...this]
, die 3 zurückgibtQ
Standardmäßig wird ein einfaches Anführungszeichen verwendet.i
an einer Zeichenkette fügt eine andere Zeichenkette am Anfang ein; Wie in Nr. 3 erläutert , entspricht jederiiii)
Wert dem.i("i".i("i"))
in JS, wodurchi
am Anfang der Zeichenfolge zwei Kopien von eingefügt werden. Tun Sie dies zweimal und Sie haben die Zeichenfolgeiiii"
.âQ
simuliert dann.search(Q)
und gibt den Index des ersten"
in der Zeichenkette an, der 4 ist .H
ist die Konstante für 32 . Bei Anwendung auf eine Zahl gibt dieq
Methode, die die Ganzzahl n als Argument verwendet, den n- ten Stamm dieser Zahl zurück. Wenn n nicht angegeben wird, ist der Standardwert 2 ,Hq
was uns die Quadratwurzel von 32 ergibt, die ungefähr 5,6568 beträgt .Â
ist die Abkürzung für~~
, welches Stockwerk das Ergebnis ergibt und uns 5 gibt .L
ist auf 100 voreingestellt undÁ
die Abkürzung für>>>
(bitweise Verschiebung nach rechts auf Null).100>>>100
ist dasselbe wie100>>>4
(der rechte Operand umschließt Mod 32), also 6 .Wie bereits erwähnt, ist der
V
Standardwert 0 .´
ist die Abkürzung für den--
Operator, daher entspricht der Code dem folgenden JS:X.n(Y)
ist äquivalent zu Y - X oder -X + Y ; Der erste--V
Wert gibt -1 und der zweite -2 zurück . Dies entspricht ungefähr - (- 1) + (- (- 2) + (- (- 2) + - (- 2)) . Vereinfacht ausgedrückt erhalten wir 1 + 2 + 2 + 2 = 7 .Wörtlich 8 und 9 .
Dies sind die Konstanten für 10 bis einschließlich 16 .
J
ist auf -1 voreingestellt . Der Japt-Interpreter schafft es irgendwie, dies korrekt zu parsen(J--) - (--J) - (--J) - (--J) - (--J)
. Wenn wir mehr rechnen, stellen wir fest, dass dies (-1) - (-3) - (-4) - (-5) - (-6) oder -1 + 3 + 4 + 5 + 6 = 17 entspricht .¾
ist, wie Sie sich vorstellen können, eine Abkürzung für.75
. Wir haben 24 Kopien von 0,75 in einem Array, dann mit summierenx
, was 0,75 * 24 = 18 .Ich denke, das ist mein Favorit.
;
zu Beginn des Programms werden die Werte einiger Japt-Konstanten geändert; ohne esI
ist 64 , aber mit ihmI
ist 91 .ìw
konvertiert es in eine Liste von Ziffern und läuftw
auf der Liste, kehrt das Array um und konvertiert dann zurück in eine Zahl, um uns 19 zu erhalten .½
ist eine Abkürzung für.5
.e
Auf einer Zahl nimmt x ein Argument y auf und gibt x * 10 y zurück . Die Kette der Berechnungen lautet also:Und das Finale
~~
dient dazu, dies auf eine ganze Zahl zu begrenzen, was unser Ergebnis von 20 ergibt .T
ist auf 0 voreingestellt .++
ist der Inkrementoperator in JS und auch in Japt;T+++T
wird analysiert als(T++) + T
, wird aber++T+++T
analysiert als(++T) + (++T)
, dies entspricht also dem JS-CodeDas Ergebnis ist 1 + 2 + 3 + 4 + 5 + 6 , was 21 ergibt .
Ein wörtliches 22 .
Ä
ist eine Abkürzung für+1
, also summiert sich diese einfach auf 231
s.Dies
[1, 2, 3, 4]
ergibt die Anzahl der Permutationen von , die 4 ist! = 24 .²
ist eine Abkürzung fürp2
, die eine Zahl hoch zwei setzt. 5 ** 2 ist 25 .°
ist eine Abkürzung für den++
Operator oder kann sie nicht als solche analysiert werden+ +
. Wie bereits erwähnt, ist derU
Standardwert 0 , wenn keine Eingabe erfolgt . Der Code ist also äquivalent zu(++U), (U++) + + (++U) + + (++U) + + (++U) + + (++U) + + (++U)
, was # 17 sehr ähnlichU
ist : wird zuerst inkrementiert1
, dann wiederholt inkrementiert und so addiert, dass das Endergebnis 1 + 3 + 4 + 5 + 6 + 7 = 26 ist .³
ist die Abkürzung für diep
Methode mit einem Argument von 3 . Wenn jedoch ein Kleinbuchstabe direkt nach einer linken Klammer angezeigt wird (»
ist die Abkürzung für((
), wird er zu einer Zeichenfolge. Auf diese Weise wird es an eine Methode übergeben und als Funktion aufgerufen (dhm³
es wird eine Zuordnung von vorgenommen.p(3)
). In diesem Fall gibt jedoch("p",3)
unser zurück3
, dann erhöhen wir es auf die Potenz von3
(p
ist die Potenzmethode, wenn sie auf eine Zahl angewendet wird), was uns unsere 27 ergibt .¼
Wie Sie wahrscheinlich inzwischen wissen, ist dies eine Abkürzung für.25
, daher berechnet sich daraus 7 / 0,25 = 28 .Alles, was in
$
Symbole eingeschlossen ist, wird als reines JavaScript behandelt. Wir haben also eine Folge von 29 Unterstrichen gefolgt von einemb
. (Ohne$
,'
wäre dies eine Zeichenfolge mit nur einem Zeichen.) Dieb
auf eine Zeichenfolge angewendete Methode gibt den ersten Index ihres Arguments in dieser Zeichenfolge zurück. Wie in # 3 erläutert , wird der letzteb
in einen String konvertiert, sodass wir den ersten Index vonb
in unserem String abrufen, nämlich 29 .µ
ist eine Abkürzung für-=
undÉ
für-1
. Der Effekt subtrahiert 30 Kopien von -1 von 0 , was 30 ergibt .Sehr ähnlich wie # 29. Das
a
Verfahren kann , wenn auf eine Zeichenfolge aufgebracht ist , kehrt den letzten Index seines Arguments in dieser Zeichenkette. Bei Verwendung der 0-Indizierung ist der letzte Indexa
in einer Zeichenfolge von 32a
s 31 .S
ist für ein einzelnes Leerzeichen vordefiniert und gibtc
für eine einzelne Zeichenfolge ihren Zeichencode mit 32 zurück .Literal 33 .
MgN
gibt die N-te Fibonacci-Zahl zurück.011
ist 9 im Oktal; die 9. Fibonacci-Zahl ist 34 .#
Gibt den Zeichencode des nächsten Zeichens zurück. Der Zeichencode für#
sich ist 35 , was unsere Arbeit hier besonders einfach macht.p
ist die Potenzierung und ohne ein zweites Argument standardmäßig 2 ; Dies ergibt also 6 ** 2 = 36 .Dieser ist ziemlich knifflig.
R
Der Standardwert ist ein einzelnes Zeilenumbruchzeichen (das ist ein Zeilenumbruch, der später wichtig wird).í
Ein String ohne Argumente nimmt jedes Zeichen und hängt seinen Index an: eine ziemlich nutzlose Transformation, aber das Ergebnis durch 5 Iterationen ist: (VerwendenR
anstelle einer wörtlichen Newline)Interessant, wie jeder Eintrag einfach ein Präfix des nächsten ist ... Der letzte Teil
è.
zählt jedoch, wie viele Übereinstimmungen/./g
im Ergebnis gefunden wurden. Die Zeichenfolge enthält 38 Zeichen. Da jedoch/./g
nur Zeichen ohne Zeilenumbruch verwendet werden, ist das Ergebnis 37 .Backticks markieren einen komprimierten String und
¥
dekomprimieren ihn aufll
.l
für eine Zeichenfolge ergibt sich einel
Länge, nach der Dekomprimierung ergibt sich also eine Länge von 38 .Oh Junge, das ist ein Trottel. Zuerst generieren wir
true
mit¨N
(¨
steht für>=
undN
ohne Eingaben ist das leere Array), dann konvertieren wir das in1
mit|N
. Von da an wird es ziemlich verrückt:(Das
¹
s ist nur ein Ersatz für close-parens und wurde weggelassen.) Das Finale erscheinto
und gibt das finale Element im Array zurück, wobei 39 erhalten werden .Meist der gleiche Trick wie bei # 3 .
¤
ist die Abkürzung für dies
Methode mit dem Argument 2 . In diesem Fall ist der transpilierte Code jedoch(("s", 2).s(2) * (("s", 2) * (("s", 2))))
vereinfacht(2).s(2) * (2 * 2)
..s(2)
gibt die Zahl als Basis-2-String zurück, was ergibt"10"
;* (2 * 2)
Wandelt dies implizit in eine Zahl um und multipliziert es mit 4 , was 40 ergibt .Ähnlich wie beim Vorgänger.
Å
ist die Abkürzung für dies
Methode mit dem Argument 1 . In diesem Fall wird jedoch jede(Å
transpiliert("s", 1)
, die nur 1 zurückgibt .1<<1<<1<<1<<1<<1
ist 32 und1<<1<<1<<1
ist 8 ; Diese werden zusammen mit XOR-verknüpft1
, um 41 zu erhalten .±
ist eine Abkürzung für+=
und¶
für===
. Dies bedeutet, dass der Code tatsächlich istY===Y
ist immer wahr, also können wir dies vereinfachen:0 + 1 = 1 ; 1 + 1 = 2 ; 2 + (2 + 1) = 5 ; 5 + 5 = 10 ; 10 + (10 + 1) = 21 ; 21 + 21 = 42 .
quelle
Iq
8 verwenden, um8
zurück zu kommen, aber für 19 müsstest du noch etwas anderes finden.q
um5
mirl
das Hinzufügen einer zusätzlichen Nummer zu ermöglichen.2
Ich arbeite an einer Alternative, damit ich=
zurückkomme.(¤
für 2.L>>L
kann frei 6.#w s Å
kann frei;
undI
#
für 21 verwendet habe .*
und^
PHP, Punktzahl 17, 130 Bytes
Zeichen verwendet
ADEFGIKLMOPRSTVXYZ=_![]()<>'"#$,;/-+*|^&0123456789afhnprstwx
1 Boolesche Konstante Z (nicht gesetzt) gleich Konstante Z
2 FTP_MOREDATA ist eine Konstante in PHP mit dem Wert 2
3 bitweise und Zeichen; und W
4 bitweise Nach links schieben und logisch nicht leeres Array auf booleschen Wert true umwandeln mit wird durch den Operator nach links schieben in Ganzzahl 1 umgewandelt
7 bitweise Oder Zeichen # und $ und 1
9 SIGKILL ist eine Konstante in PHP mit dem Wert 9
10 Bitweise Verschiebung nach rechts bei jedem Schritt ist eine Ganzzahldivision mit 8, daher haben wir die Schritte 333333, 41666, 5208, 651, 81, 10
13 zähle char X in der Zeichenkette X ... von Anfang an
15 Hexadezimalwert f = 15
17 bitweises Xor mit den Strings ha und YV
Alle Snippets sind Elemente in einem Array
Probieren Sie es online!
PHP, Score 16, 94 Bytes
Zeichen verwendet
AEIMPRTUZeflnrstvwx^_&|()[]=!.*+/-<>$":0123456789
1 Boolesche Konstante Z (nicht gesetzt) gleich Konstante Z
2 bitweise und Zeichen: und w
3 Pi wird durch ein leeres Array, das auf Null gesetzt wurde, auf einen ganzzahligen Wert gesetzt
7 bitweise xor Zeichen A und v
10 Variable $ s nicht gesetzt! $ S = ein Concat mit Stringlänge von Variable $ s
13 111/2 = 55/2 = 27/2 = 13 Bitweise Ganzzahldivision
15 Hexadezimalwert f = 15
Alle Snippets sind Elemente in einem Array
Probieren Sie es online!
PHP, Punktzahl 14, 84 Bytes
Zeichen verwendet
$!_^[]()%/+~-=AEILMNPRUZ0123456789delnrstx
1 Boolesche Konstante Z (nicht gesetzt) gleich Konstante Z
3 Pi wird durch ein leeres Array, das auf Null gesetzt wurde, auf einen ganzzahligen Wert gesetzt
7 ERA ist eine Konstante mit dem Wert 131116 mod 11 = 7
10 Variable $ s nicht gesetzt! $ S = ein Concat mit Stringlänge von Variable $ s ist Null
13 hexadezimaler Wert d = 13 14 bitweise nicht und Minuszeichen erhöhen NULL auf 14
Alle Snippets sind Elemente in einem Array
Probieren Sie es online!
quelle
R, Punktzahl
1314Dank user2390246 gibt es eine extra.
Zeichen verwendet:
0123456789acemqrstuvxDFT^=";-/+()$
quelle
F^F
2"n"%in%"n"+"n"%in%"n"
:; 3-9: Ziffern, 101e1
22/2
T--T--T--T...
0xD
sum(mtcars$vs)
%
und Überlegung, integrierte Datensätze zu verwenden. Ich kann nicht verstehen, warum es nicht gut wäre.dataset['A','B']
, vorausgesetzt, er vermeidet das Überlappen der bereits verwendeten Buchstaben (und geschieht) einen nützlichen Wert enthalten!). Leider enthalten alle Datensätze mit benannten Zeilen, soweit ich einen kurzen Blick darauf werfen kann, den Buchstaben i, sodass es nicht mit der Verwendung kompatibel ist%in%
.q=""=="";q+q
. Das würde die Verwendung der Buchstabeni
und frei machenn
. Ich habe jetzt keine Zeit, mich damit zuMATL ,
212223 Zahlen (273 Bytes)Vielen Dank an J Doe für die Erweiterung von 22 auf 23 Nummern!
Probieren Sie es online! Jedes Snippet in der Verknüpfung wird entweder mit
D
(Anzeige) oder]D
(Endlosschleife explizit und Anzeige) beendet, um den Stapel zu löschen und somit vom nächsten Snippet zu isolieren.Erläuterung
Drücken
0
. Negieren. Gibttrue
, was angezeigt wird als1
.String schieben
'bd'
. Aufeinanderfolgender Unterschied zwischen den Codepunkten der Zeichen.Drücken Sie auf das Zellenarray, das die Nummer enthält
pi
. In ein numerisches Array konvertieren (dh in eine einzelne Zahl). Abrunden.2
Zweimal drücken . Leistung.Numerisches Literal.
Numerisches Literal.
Numerisches Literal.
Numerisches Literal.
Numerisches Literal.
Drücken
3
. Drücken3.333333333333333
. Multiplizieren. Aufgrund der Fließkommagenauigkeit ergibt sich10
.Numerisches Literal.
Drücken
3
. Mit2
zweimal multiplizieren .Drücken Sie
[6]
(das ist das Gleiche wie6
). Berechne n- te Primzahl.1
14 mal drücken . Anzahl der Elemente im Stapel. Räumen Sie den Rest des Stapels ab.Drücken
4
. Quadrat. Das Gleiche tun. Beliebig: gibt1
. Subtrahieren.Drücken
4
.2
dazu erhoben.Array drücken
[false false ... false]
(17 mal). Anzahl der Elemente im Array.Array drücken
[true true ... true]
(18 mal). Summe des Arrays.Drücken Sie 19 Zufallszahlen aus dem Intervall (0,1). 18 Mal horizontal verketten. Anzahl der Nicht-Null-Elemente im Array.
0
20 mal drücken . Stapelinhalte vertikal verketten (ergibt einen Spaltenvektor). Größe: gibt das Array an[20 1]
. Maximales Array.1j
21 mal drücken (imaginäre Einheit). 20 mal addieren. Teilen Sie durch1j
.Numerisches Literal
Do ... while loop (
`
) mit implizitem Ende. In der ersten Iteration wird der Iterationsindex@
(Q
) verschoben und 22-mal inkrementiert , was ergibt23
. Die Schleifenbedingung (@@<
) ist falsch, daher wird die Schleife verlassen.Einige Ideen zur weiteren Verbesserung
(Leerzeichen) in Snippet 10 könnte durch ersetzt werden
|
X>
in Snippet 20 könnte durch ersetzt werdenp
, wodurch Präfix frei wirdX
.:
,A
quelle
Vim 8 unter Windows, Punktzahl 13, 104 Bytes
^{keystroke}
repräsentiert<C-{keystroke}>
, so^X
ist es<C-x>
, außer^@
was ist<C-j>
. Ich versuche immer noch, dieser Liste weitere Nummern hinzuzufügen und<CR>
stelle einen Zeilenvorschub dar.Hinweis: Um diese Befehle auszuführen, starten Sie vim mit
-u NONE -U NONE
. Dies soll sicherstellen, dass Ihre Configs den Code nicht stören.Die Snippets 1 bis 10 starten im Einfügemodus. Während Snippets 12 und 13 im normalen Modus gestartet werden.
Erklärungen
Snippet 8 ist
:^R=&ts^@
. Ich muss mich bei @ L3viathan für die Erstellung bedanken und bei @ nmjcman101 für den Vorschlag,^@
den Zeilenvorschub zu ersetzen, und bei @ ØrjanJohansen für die Verkürzung&tabstop
auf&ts
.&ts
Anschließend wird die Größe der Registerkarte ermittelt (standardmäßig 8), und dieser Wert wird in den Editor eingefügt.Snippet 10 ist
8^O^A^O^A
. Wir fügen eine 8 ein und erhöhen sie dann zweimal, um 10 zu erhalten.Snippet 11 ist
0^[^X^X^X^X^X^X^X^X^X^X^X0x
. Wir schreiben eine 0 auf und dekrementieren sie 11 Mal, um -11 zu erhalten. Dann entfernen wir das Minus, um 11 zu erhalten.Snippet 12 ist
:h<CR>wwwwwwwwwwwy$:q<CR>p
. Daraufhin wird das Hilfemenü von Vim 8 geöffnet, das die folgenden Informationen enthält:Und die Folge von
w
s wechselt zu 12, an welcher Stelley$
die Zahl kopiert wird. Dann wird es mit in den Editor eingefügtp
.Snippet 13
grgKjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjYZZvPWWWllld|llD
bedankt sich bei @DJMcMayhem für die Entwicklung. Dies funktioniert nur unter Windows. Das Snippet durchsucht das Hilfemenü nach Befehlen, die mit beginneng
. Dann bewegt es sich mitj
nach unten , um zu dieser Zeile zu gelangen:Danach wird es kopiert und in den Puffer eingefügt. Danach wird alles außer der 13 aus dem Puffer entfernt.
quelle
^R=&tabstop+&tabstop+&tabstop<CR>P
dir das 12 geben, oder wird da<CR>
schon gebraucht^M
?<CR>
als ich sagte^M
, aber danke, ich werde^M
jetzt versuchen , das aus Snippet 8 zu entfernen :)0x01
während Strg + X gibt0x18
. Und klar, diese beiden sind getrennte Bytes. Ist das sinnvoll?-u NONE -U NONE
, wird&tabstop
es mit 8 ausgewertet. Also habe ich dies mit dem 8-Snippet mit einigen Modifikationen ausgetauscht, danke :)Mathematica, Punktzahl 13
quelle
⌊⌋⌈⌉
⌊⌋⌈⌉
indem wir uns⌊E⌋
inFloor@GoldenRatio
,⌈Pi⌉
in4
,LucasL@4
in7
und77/7
in verwandeln22/2
. Es ist wahrscheinlich möglich, mindestens einen Schritt weiter zu gehen, indem Sie eine Funktion mit//
05AB1E , Score 18, 67 Bytes
Probieren Sie es online!
quelle
A'ok
:)„((Ç;¬
=20.0
(Zwei-Byte-Zeichen "(("; zu Ordnungswerten; beide halbieren; den Schwanz nehmen);₁.²₁P₃/ï
=21
(log-2 von 256; multipliziert mit 256; dividiert durch 95; ohne Dezimalstellen);₂Ågttγć
=22
(26. Amtszeit von Lucas; zweimal Quadratwurzel; in gleiche Teile gespalten; mit herausgezogenem Kopf). Die letzten beiden waren Versuch und Irrtum.;)PingPong , Ergebnis 127
In PingPong hat jedes Zeichen einen eigenen numerischen Wert, was das Zählen bis zu 127 zu einer trivialen Aufgabe macht. Die Sprache liest den Wert jedes Zeichens ein und schiebt es an die Spitze eines Stapels, wo alle Operationen ausgeführt werden. PingPong kann theoretisch 127 überschreiten, erfordert jedoch die Übergabe eines Zeichenblocks, der einfach als Leerzeichen in einem Texteditor angezeigt wird, sodass ich sie aus meiner Lösung herausgelassen habe.
quelle
Oktave, Punktzahl 14, 74 Bytes
Ich bin mir ziemlich sicher, dass ich jetzt am Limit bin.
Hat zu entfernen ,
strchr
da ich bereitsc
in Nummer 10. Ich habe nochj
,^
,=
,!
, Raum und horizontale Registerkarte (ASCII-9) nach links, so dass es möglich sein könnte , einen weiteren zu quetschen.Die horizontale Registerkarte kann als Leerzeichen verwendet werden, sodass der mit
strchr
undnnz
verwendete Trick ein weiteres Mal verwendet werden kann. Die einzigen verbleibenden Kleinbuchstaben sindabdfgjkmoquvwxy
. Es gibt nicht viele Funktionen, die daraus gemacht werden können.mod
könnte funktionieren, aber es kann keine Zeichenketteneingabe annehmen.Es ist einfach, die verbleibenden Zeichen zu verwenden
1
, aber ich weiß nicht, wie ich an etwas anderes kommen kann.Testen Sie alle .
Möglicherweise nützlich:
fun a
ist dasselbe wiefun('a')
,fun a b
ist dasselbe wiefun('a','b')
und so weiter. Dies kann an mehreren Stellen verwendet werden:Wenn Sie dies verwenden, wird es
0
verfügbar, aber ich kann noch nicht sehen, wie ich es nützlich machen kann.e (2.71828...)
undj
sind noch unbenutzt. Muss aber entfernenceil
, um zu verwendene
.Alternativen (Inspiration):
quelle
JavaScript (ES7), 16 Ganzzahlen,
137130128 BytesIch nahm die Antwort von @ETHproductions und rannte eine Weile damit. es hat sich so sehr verändert, dass ich es separat poste. Ideen sind willkommen. :)
Verbleibend:
$_@#!^&|/?:, ABDEGHIJKLNPQRUVWZcghjklmpqrsuvwyz
Oder wenn das Snippet für 1 ersetzt wird durch
!!/!//!!/!/
:$_@#^&|*?:", ABDEGHIJKLNPQRUVWZcghjklmpqrsuvwyz
JavaScript (ES7), 16 Ganzzahlen, 127 Byte
Ein Byte kürzer. : P
Verbleibend:
$_@#!/^&|?:,ABDFGHIJKLNPQRVWYZcghjklmpqrsuvwyz
quelle
-~{}-~{}
: P Insgesamt sind diese jedoch ziemlich gut.!&/^|
viel zu tun, ziemlich beeindruckend. Wenn nötig, können Sie!!/!//!!/!/
für 1 bis Handel!/
für"*
.-~-~{}
+!![]+[+[]]
, solange es keine bessere Verwendung für!
Dyalog APL, Punktzahl 15, 89 Bytes
Die vorherigen Zeilenumbrüche
l:l
sind Teil von 12.Die Leerzeichen in 14 stehen für Tabulatoren.
quelle
0 0 0
->0,0,0
;]fromhex f
> <> , Punktzahl 20,
93,907465 Bytes(3 Bytes von Teal Pelican gespeichert, viele Bytes von Jo King gespeichert!)
Probieren Sie sie auf dem Fischspielplatz! Sie können die Snippets dazu bringen, ihre Ergebnisse auszudrucken, indem Sie jeweils
n;
am Ende hinzufügen . Beachten Sie, dass das 9. Snippet einen Tab enthält, der durch Stapelaustausch gegessen wird.Erläuterung:
iii((
jederi
, Eingaben zu erhalten, aber da es keine gibt, drücken sie-1
stattdessen EOF = . Dann(
ist die Anweisung weniger als, und da-1
nicht weniger als ist-1
, schiebt es einen Falsey0
; aber die zweite(
fragt ob-1
kleiner ist als0
, was es ist, also drängt es eine wahrheit1
.2
und3
sind offensichtlich.ll{lll{[
der erstel
drückt die Länge des Stapels,0
der zweite drückt die neue Länge und bringt den Stapel auf0, 1
. Der{
dreht den Stapel nach links und vertauscht das1
und0
. Drei weiterel
s bringen den Stapel auf1, 0, 2, 3, 4
. Dann{
dreht sich der1
nach vorne und[
saugt als erstes1
den Stapel ab, der ist4
.5
,6
,7
Und8
sind zu offensichtlich.!\t00=0g
(wobei\t
ein Tabulator darstellt)!
den Tabulator,00=
drückt dann zwei Nullen und prüft, ob sie gleich sind - sie sind es, sodass wir eine Wahrheit erhalten1
. Nachdem Sie einen anderen gedrückt haben0
,g
wird das Zeichen an die Position1,0
des Codes verschoben9
. Dies ist die Registerkarte mit dem Zeichencode .a
bis zuf
jedem push10
um15
jeweils (vermutlich um hexadezimal schön zu machen).44*
drückt zwei4
s und multipliziert sie miteinander, z16
.'RA'
schiebt die Zeichencodes vonR
undA
(82 bzw. 65) auf den Stapel und%
berechnet dann82 mod 65 = 17
.999-9--
bewertet zu9 - ((9 - 9) - 9) = 18
."&F#"
drückt die Zeichencodes&
,F
und#
, die sind38
,70
und35
jeweils. Dann,
ist die Teilung, also bekommen wir38 / (70 / 35) = 19
.1::
drückt man a1
und dupliziert es zweimal,+
addiert zwei der beiden, um zu erhalten2
;:+
dupliziert das2
und fügt es sich hinzu, um es zu bekommen4
;+
fügt den Rest hinzu1
, um zu erhalten5
; dann:+:+
dupliziert und zweimal fügt hinzu, in resultierend20
.Dies ist die mit> <> maximal mögliche Punktzahl. Jeder Schnipsel muss eine Anweisung irgendwo enthält , die einen leeren Stapel in einen nicht leeren Stapel dreht, und es gibt nur 18> <> Anweisungen , die das tun können (nämlich
i
,l
und die Ziffern0–9
unda–f
) plus String - Modus. (Jede andere Anweisung bewirkt entweder nichts an einem leeren Stapel><v^/\|_#x!{}r
oder versucht, etwas und Fehler?.+-*,%=():~$@[]on&gp
herauszufiltern.) Beim Aufrufen des Zeichenfolgenmodus wird entweder"
oder verwendet'
, sodass höchstens18 + 2 = 20
Ausschnitte möglich sind.Wenn Sie mit unprintables bequemer sind als ich, ist dies möglich , in 53 Bytes, dank Jo King:
00=, iii((i-, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, 2222***, !Xll$g, 11+::+:+:++, 'Y', "Z"
, wo dieX
,Y
undZ
wird durch Zeichen mit Codes ersetzt17
,19
und20
jeweils.quelle
iii((i-
16>2222***
17>lll{lllll{{[{n
(vielleicht skizzenhaft, aber wenn Sie als eine Zahl ausgeben möchten, gibt es mindestens eine wenigerl
) 18>11+::+:+:++
! ll$g
wo das Leerzeichen durch das Steuerzeichen mit dem Wert 17 (Gerätesteuerung 1) ersetzt wird?MathGolf ,
485153 Ganzzahlen, 324 Bytes40
Dank @maxb +2 Punkte (und -2 verschiedene Bytes ) .Jede Zeile ist ein separates Programm.
Verwendete Bytes (92 verschiedene Bytes):
îª∞~c±b+φⁿ_¥-567○¢i♀/d²♂ABCDE☻FGHIJKLMNOPQRST♥UVWXYZ♫¼8]Σ41╔½π░3§2#τ╥└♦⌡!⌠'0$ÿ@£9)►◄╠•╠"h ♣(
Erklärung und TIO-Links:
MathGolf ist eine neue Golfsprache, die sich auf mathematische Golfherausforderungen spezialisiert hat. Es hat eine Menge Single-Byte-Buildins für Zahlen, was es zu einer perfekten Herausforderung macht.
1)
î
: Schieben Sie den 1-indizierten Wert der Schleife, der standardmäßig 1 ist: Probieren Sie es online aus.2)
ª∞~
: [1] drücken; verdopple es ([2]); Pop-Liste und schieben Sie den Inhalt auf den Stapel: Probieren Sie es online.3)
c±b±+
: -2 drücken; dann Pop und Push seinen absoluten Wert; -1 drücken; dann Pop und Push seinen absoluten Wert; und addieren Probieren Sie es online aus.4)
φⁿ_¥-
: Schieben Sie den goldenen Schnitt (1.618033988749895); cube it (4.23606797749979); Dupliziere die Oberseite des Stapels. nimm Modulo 2 (0,23606797749979); subtrahieren sie voneinander: Probieren Sie es online.5,6,7) Die Zahlen selbst: Probieren Sie es online. Probieren Sie es online aus. 9) : -3 drücken; Im Quadrat: Probieren Sie es online aus.
8)
○¢i♀/
: 2048 drücken; konvertiere in eine hexadezimale Zeichenkette (800); umgewandelt in eine ganze Zahl; Drücke 100; Teilen:d²
10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34, 35,36,37,38) Push Builtins für die Zahlen selbst (♂ABCDE☻FGHIJKLMNOPQRST♥UVWXYZ
): Probieren Sie es online.39)
♫¼¼¼¼
: Drücken Sie 10000; viermal ganzzahlig geteilt durch 4: Probieren Sie es online aus.40)
88888]Σ
: 8 fünfmal drücken; wickle sie in eine Liste ein; Fassen Sie diese Liste zusammen: Probieren Sie es online aus.41) Die Nummer selbst: Probieren Sie es online.
42)
╔½½½½½½½½½½½
: 86400 drücken; ganzzahlig durch 2 elf mal geteilt: Probieren Sie es online aus.43)
π░3§3
: PI drücken (3.141592653589793
); Besetzung der Saite; Pop und Push sein drittes 0-indiziertes Zeichen (4); drücke 3; Den gesamten zusammengefügten Stack implizit ausgeben: Probieren Sie es online aus.44)
22#22#
: 2 mal drücken; Nimm die Kraft der beiden (4). mach es nochmal; Den gesamten zusammengefügten Stack implizit ausgeben: Probieren Sie es online aus.45)
τ╥└
: Push 2 * PI (6.283185307179586); Pop und drücke die Potenz von 2 darunter, die am nächsten ist (4); Drücke auf die Oberseite des Stapels + 1, ohne zu platzen (5). Den gesamten zusammengefügten Stack implizit ausgeben: Probieren Sie es online aus.46)
♦⌡⌡⌡⌡⌡⌡⌡⌡⌡
: 64 drücken; 9-mal um 2 verringern: Probieren Sie es online aus.47)
!⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠
: Gamma (n + 1) drücken (standardmäßig 1); dreiundzwanzig Mal inkrementieren: Probieren Sie es online aus.48)
'0$
: Geben Sie den Ordnungswert des Zeichens '0' ein: Probieren Sie es online aus.49)
ÿ@@@@£9
: Schnur drücken"@@@@"
; Pop und schieben Sie seine Länge (4); 9 drücken; Den gesamten zusammengefügten Stack implizit ausgeben: Probieren Sie es online aus.50)
))))))))))))))))))))))))))))))))))))))))))))))))))
: Inkrementiere um 1 mal 50: Probiere es online aus.51)
►◄╠•╠
: Drücken Sie 1.000.000; Push 10.000.000; Pop beide und Integer-Divide sie miteinander (10); Drücken Sie 512; Pop beide und Integer-Divide sie miteinander: Probieren Sie es online.52)
"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"h
: Schubschnur"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"
; schieben Sie die Länge (ohne die Schnur zu knallen); entferne alles vom Stapel bis auf den letzten Gegenstand: Probiere es online aus.53)
♣(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
: 128 drücken; Fünfundsiebzig Mal um eins verringert: Probieren Sie es online aus.Ich werde versuchen, später noch etwas hinzuzufügen. Ich habe noch einige nützliche Dinge übrig, einschließlich Modulo
%
und Multiplizieren*
.quelle
88888ΓΣαΣ
->88888]Σ
oder88888§§§§Σ
Sie sparen 2 Befehle auf Kosten der Verwendung von einem. Sie könnten auch so etwas tun,"xxxxxx"h
bei dem das letzte Zeichen ein nicht unterbrechendes Leerzeichen ist, das alles außer TOS löscht, und Sie können die Länge der Zeichenfolge verwenden, um die Zahl zu generieren. Vielleicht verwenden Sie etwas anderes als dasx
, denn dann haben SieWx
das, was Ihnen 53 gibt, solange Sie 35 auf eine andere Weise bekommen können.char/ord
Operator hinzugefügt , der wie'A$
folgt funktioniert ->67
und auch für längere Zeichenfolgen (ähnlich wie Base-256-Ganzzahlen). Es ist nicht sehr gut dokumentiert, aber wenn Sie daran interessiert sind, diese Antwort zu verbessern, könnte ich den Chatroom für MathGolf für alle Fragen neu erstellen.88888]Σ
. Wusste nichts davon]
. Wie für die"hhhhh"h
, scheint das nicht zu funktionieren . : S[
den Array-Kontext beginne und beende]
und die Ergebnisse in ein Array einbinde . Wenn sich die oberste Ebene wie die unteren Ebenen verhält,]
schien es eine gute Idee , den gesamten Stapel in ein Array zu packen.Java 8,
111213, 39 BytesJava hat nur 10 Symbole für Zahlen (0-9) und alle Methodenaufrufe und Konstanten erfordern einen Punkt, daher bin ich mir nicht sicher, ob ich über 11 Ausgaben kommen kannOffensichtlich werden Zeichen standardmäßig in Ganzzahlen umgewandelt, wenn Operationen angewendet werden
+1 mit Hilfe von @ OlivierGrégoire
Erklärungen:
Ganzzahliges Lambda, das keine Eingabe annimmt und 1 zurückgibt. Wenn ein Parameter keine Eingabe annimmt, wird der Standardwert gemäß dem obigen Meta-Post verwendet, der für Ganzzahlen 0 ist
wörtliche ganze Zahlen
XOR aus zwei Zeichen, um 10 zurückzugeben
Literal Integer
Lambda-Ausdruck, der die Länge einer 12-stelligen Zeichenfolge zurückgibt
Hexadezimalzahl 13
TIO Link, wenn Sie dies überprüfen möchten.
quelle
2
kann as2
und10
as geschrieben werden'P'^'Z'
. Dadurch werden auch die ZeichenX+*
und Verwendungen freigegebenP
.i->i.ONE
ist also ungültig.Gaia , Punktzahl 25, 203 Bytes
Ich halte dies für eine perfekte Punktzahl, da aufgrund der Charakterbeschränkungen keine Niladen mehr verwendet werden können.
Erklärungen
1.
§‼
§
ist ein Leerzeichen,‼
ist zwingend boolesch, das Ergebnis ist also 1.2.
..⌉+⌉
.
ist eine Abkürzung für0.5
, so ist diesceil(0.5+ceil(0.5))
.3.
₵P~~
₵P
ist pi,~
ist bitweise Negation. Doppelte bitweise Negation ist einfach Kürzung.4.
4
5.
5
6.
6
7.
∂Ql
∂Q
ist eine Liste mit den Namen der Wochentage,l
ist Länge.8.
8
9.
9
10.
¶c
Codepunkt
c
des Zeilenvorschubs¶
.11.
11
12.
'¡ċ⌋u⌋
13.
--⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻
-
ist eine Abkürzung für-1
,⁻
ist Subtraktion. Das ist also-1 - -1 - -1...
genug, um 13 zu machen.14.
7:,Σ
Drücken Sie
7
, duplizieren Sie:
, verbinden Sie,
die beiden Siebenen zu einer Liste und addieren SieΣ
.fünfzehn.
Ø!))))))))))))))
Ø
ist eine leere Zeichenfolge, alsoØ!
1. Inkrementiere)
1 14-mal.16.
øøw<øøw<«øøw<«øøw<«øøw<«
17.
⟩‘
Wenn Sie eine Zeichenfolge mit schließen,
‘
wird sie zu einem Basis-250-Zahlenliteral.⟩
hat in Gaias Codepage den Byte-Wert 17.18.
₸ḣ₸K$₸ḣ₸/S₸₸/=$
19.
]]]]]]]]]]]]]]]]]]]n
Jeder
]
umschließt den Stapel mit einer Liste. Tun Sie dies 19 Mal und erhalten Sie die Tiefen
der Liste.20.
⇑’e
Wenn Sie eine Zeichenfolge mit schließen,
’
wird eine Liste mit Codepage-Codepunkten erstellt.e
legt die Liste auf dem Stapel ab.⇑
hat einen Codepunkt von 20 in der Codepage.21.
0(((((((((((((((((((((_
Dekrementiere
(
21 Mal um 0 und negiere dann_
.22.
22
23.
“B”“↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺B”B
Konvertieren Sie die Zeichenfolge
“B”
von Basis 24, wobei die Ziffern von 0 bis 23 sind↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺B
. Das Ergebnis ist23
.24.
3₈×
3 × 8.
25.
ℍḥḥ
100
ℍ
halbiertḥ
und nochmals halbiert.quelle
C, Punktzahl 13
Dies sind nur ein paar ganzzahlige Konstanten.
0==0
ergibt 1__LINE__
= 21+1+1...
=1*10
= 10'o'
ist 111,'.'
repräsentiert das nicht druckbare ASCII 0x10. 111/10 = 11(2<<2)
= 88*2
= 1616-2-2
= 12"strlenstrlens"
= 13quelle
Ohm , Punktzahl
2122, 160 GesamtbytesProbieren Sie es online!
Erklärungen
1.
╓S@Ri
Drücken Sie die Sekunden des aktuellen Datums / der aktuellen Uhrzeit (
╓S
). Ermitteln Sie den Inklusionsbereich von 1 bis Sekunden (@
), kehren Sie ihn um (R
) und ermitteln Sie das letzte Element (i
), das immer 1 ist.2.
ΓΓ-Γ-Γ-
Γ
ist -1, also ist dies (-1) - (-1) - (-1) - (-1), was 2 ist.3.
αê⌠
αê
ist Eulers Nummer (2.71828 ...),⌠
ist Decke. 3 ist das Ergebnis.4.
¡¡¡¡¼
¡
erhöht den Zähler,¼
drückt den Zähler.5.
5
Nur eine wörtliche.
6.
▀lll▀l
▀lll▀
ist ein komprimiertes String-Literal, das äquivalent zu ist"of >ic"
.l
Nimmt die Länge, so ist das Ergebnis 6.7.
ÑÑÑÑÑÑÑÿWÿk
Zuerst drücken wir 7 Zeilenumbrüche (
Ñ
) und dann eine leere Zeichenkette (ÿ
). Der Stapel wird in ein Array (W
) eingeschlossen, und dann wird der Index der leeren Zeichenfolge in diesem Array gefunden.8.
ü`½½
ü
ist ein Leerzeichen.`
drückt seinen ASCII-Wert (32), dann wird er zweimal halbiert (½½
).9.
9
Nur eine wörtliche.
10.
..≥°
..
ist ein buchstäblicher.
Buchstabe. Es wird inkrementiert (≥
), wodurch die Zeichenfolge als Zahl analysiert wird. Der Standardwert ist 0, da es sich nicht um eine gültige Zahl handelt, und es wird auf 1 inkrementiert. Dann berechnen wir 10 1 (°
).11.
$$J
$
schiebt den aktuellen Wert des Registers, anfangs 1. Also, schiebe 1 zweimal, füge den Stapel zusammen und drucke.12.
3dd
3 drücken und zweimal verdoppeln.
13.
7ƒ
Drückt die 7. Fibonacci-Nummer.
14.
2≡≡≡Σ
Drücken Sie 2, verdreifachen Sie es dreimal und lassen Sie 7 2 auf dem Stapel. Dann nimm die Summe des Stapels (
Σ
).fünfzehn.
║F
║
ist das Trennzeichen für Literale mit Basis-220-Zahlen. Da dies am Ende einer Zeile steht, muss sie nicht beendet werden.16.
4º
Berechnen Sie 2 4 .
17.
0ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~
ò
ist bitweises Negieren,~
ist arithmetisches Negieren. Durch die Kombination dieser Operatoren können wir 0 bis 17 Mal inkrementieren.18.
6DD++
Drücken Sie 6, duplizieren Sie es zweimal und berechnen Sie 6 + 6 + 6.
19.
8π
Drücken Sie die 8. Primzahl.
20.
τ╛hτ*
Drücken Sie 10 (
τ
), erhalten Sie das erste Element (h
) seiner Primfaktoren (╛
), multiplizieren Sie das mit 10.21.
"≤"≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤A
Ähnlich wie bei vorherigen Snippets wird der String
"≤"
mit 0 analysiert. Wir dekrementieren ihn 21 Mal und nehmen dann den absoluten Wert an.22.
1111 11v11%L1111 11v11%L
Hier berechnen wir 1111 div 11 mod 11, das ist 2, dann drucken Sie 2. Dann wiederholen Sie es.
quelle
PowerShell, Punktzahl
12, 91 Bytes.14, 176 BytesBearbeiten:
(),""
Pondering 15 mit so etwas wie freigegeben,"ZZZZZZZZZZZZZZZA".InDeXof("A")
aber Punkt oder 'e' können nicht wiederverwendet werden.PowerShell kann keine Variablen ohne $ ausführen, kann keine Exponentiation, Bitverschiebung, Pi, ceil () usw. mit Grundsymbolen ausführen und gibt meistens einen Coercian von / nach bool und von / nach numbers-as-strings ein Es gibt relativ wenig Spielraum für die Generierung von Zahlen mit niedriger Syntax.
quelle
0
, also können es 13 sein0xd
. Sie können es5
an den normalen Platz stellen und so s+
kombinieren1
. Damit sollten Sie auf 14 kommen. Wenn Sie Zeichen speichern müssen, können die Hashtable-Schlüssel mehr als einen Buchstaben enthalten. Und wenn Sie eine freie Möglichkeit haben, 1s zu summieren, können Sie10
= tun1e1
.""-(""-(""-lt(""-""))-(""-lt(""-"")))
. Das ergibt sich$?
für die Summierung, und dann können Sie das tun,1e1
was ich vorgeschlagen habe.t
Zusammenstöße mit beiden Versionen von 1 abzuwarten,(""-eq"")-(""-(""-eq""))
scheint es besser zu sein, dieq
in der Hash-Tabelle leicht zu ersetzen.TI-Basic (Serie 83), Ergebnis
2122232425 (1003 Bytes)Unter http://tibasicdev.wikidot.com/one-byte-tokens finden Sie eine Liste der Dinge, die die Herausforderung hier zulässt und nicht zulässt.
All dies können vollständige Programme sein, da die letzte Zeile eines Programms automatisch gedruckt wird. Aber (mit Ausnahme von 17, die mehrere Zeilen lang ist), können sie auch Schnipsel auf dem Startbildschirm sein.
Zum jetzigen Zeitpunkt sehe ich keine andere Möglichkeit, einen Wert ungleich Null aus den verbleibenden verfügbaren Token zu ziehen. Wenn Verbesserungen vorgenommen werden müssen, müssen zunächst einige der oben genannten Lösungen konservativer gestaltet werden.
Erklärungen
A=A
ist eine boolesche 1, da die VariableA
sich selbst entspricht.B
ist standardmäßig 0,tan(tan(cos(cos(cos(B
ist ungefähr 2,21, und dann ergreifen wir das Wort.C!°
beträgt 1 Grad im Bogenmaß, ungefähr 0,017. Eine positive Potenz davon ist tanh (2), ungefähr 0,964. Wir kodieren diese Potenz in Binärform mit impliziter Multiplikation und√(
und nehmen danntanh⁻¹(
.cosh(sinh⁻¹(X
₁₀^(
ist ein für Potenzen von 10 integriertes Ein-Byte-Format und 10 ^ 10 ^ 0 = 10 ^ 1 = 10.F nPr F
ist 1.sin(tan⁻¹(X
simplify toG≤G
ist 1, so[[G≤G]...[G≤G]]
ist ein 13x1 Spaltenvektor. Nimmt man das Produkt seiner Transponierung mit sich, so erhält man die Matrix[[13]]
, deren Determinante 13 ist.not(H)
ist 1.tanh(not(H))
ist nur eine Zahl ungleich 0 oder 1 undln(XXX....X)ln(X)^⁻1
vereinfacht die Anzahl derX
in dem ersten Protokoll enthaltenen Werte, vorausgesetzt, sieX
ist nicht 0 (damit das Protokoll existiert) und nicht 1 (damit wir nicht teilen) um 0).e^(e^(e^(F
wertet gegen 15.15 aus, und dann ergreifen wir das Wort.J≥J
ist 1.identity(
konstruiert eine 1x1 Identitätsmatrix,dim(
findet ihre Zeilen- und Spaltendimensionen undsum(
fügt sie hinzu, um 2 zu erhalten. Dann machen wir das noch einmal und addieren die Dimensionen einer 2x2-Matrix, um 4 zu erhalten, und addieren erneut die Dimensionen einer 4x4-Matrix um 8 zu erhalten, und addieren Sie die Dimensionen einer 8x8-Matrix, um 16 zu erhalten.K nCr K
ist der Binomialkoeffizient 0, wählen Sie 0 oder 1. Addieren von 17 Einsen ergibt 17.i-i-...-i
vereinfacht auf 18i und nehmenabs(
ergibt 18.rand→L
speichert eine zufällige reelle Zahl nach L, aber es ist uns egal, was es ist. Wir rechnenlog(L)⁻¹log(L^19)
, was sich auf 19 vereinfacht.sinh(sinh(cos⁻¹(I
ist etwas mehr als 4,seq(III,I,I,sinh(sinh(cos⁻¹(I
gibt also die Liste an,{0 1 8 27 64}
deren arithmetisches Mittel 20 ist.π
21 ergeben; Wir kodieren diese Potenz ternär mit impliziter Multiplikation und³√(
.3×√(
als Kubikwurzel und(
zur Multiplikation.Fix 0
ist die Einstellung für die Anzeige von 0 Stellen nach dem Komma, wobei alle Werte auf ganze Zahlen gerundet werden.sin⁻¹(ᴇ0
ergibt π / 2 und π / 2 multipliziert mit sich selbst ergibt 7 mal 23,59, was auf 24 rundet.5*5
ist 25. (Es wäre konservativer5
, 5 zu verwenden und die dort verwendete Lösung für 25 anzupassen. Auf diese Weise wird jedoch viel Platz gespart, und es*
ist kein sehr nützliches Zeichen, da implizite Multiplikation vorhanden ist.)quelle
SOGL , Score
161820, 109 Bytes, 47 Zeichen verwendetquelle
Brachylog , 16 Ganzzahlen, 86 Bytes
Probieren Sie es online! (Die Eingabe steuert, welches Programm ausgeführt wird, von 1 bis N)
Erläuterung
quelle
Jelly , Punktzahl 22, 177 Bytes
Probieren Sie alles auf einmal oder versuchen Sie es nacheinander (Argument ist die gewünschte Ausgabe).
Unbenutzte Zeichen:
quelle
A
sowohl für 2 als auch für 4 , nicht wahr?22¹£€Y
den Hauptlink eingeben, können Sie alle Snippets auf einmal ausführen. tio.run/##y0rNyan8///hzjauOsc6Ry5jLt0jG3UPbTq0icuUy4zLnMuC6/…Reng, Score 40, 149 Bytes
Probieren Sie es hier aus!
Alle Großbuchstaben sind Zahlen, das ist schön. Alle bis auf zwei sind Schnipsel. Die zwei, die Programme sind:
Über den angegebenen Link kann der Stack während der Ausführung angezeigt werden. Ich werde später eine Erklärung schreiben.
quelle
CJam, Punktzahl 27, 168 Bytes
1-3:
X
,Y
,Z
Die Variablen
X
,Y
undZ
werden jeweils mit 1, 2 und 3 initialisiert.4:
",,,,",
Schieben Sie die Schnur
,,,,
und nehmen Sie die Länge.5-9:
5
,6
,7
,8
,9
Numerische Literale.
10-20 :
A
-K
Vorinitialisierte Variablen.
21
U)))))))))))))))))))))
Die Variable
U
wird mit initialisiert0
. Drücken SieU
und erhöhen Sie es 22 Mal.22
22
Numerisches Literal.
23
';(((((((((';((((((((
Drücke den Charakter
;
und dekrementiere ihn 9 Mal, um zu gelangen . Drücke2
dann;
erneut und dekrementiere ihn 8 Mal, um zu gelangen3
.24:
4m!
Nehmen Sie die Fakultät von 4.
25
TT=TT=+TT=TT=TT=TT=TT=++++
TT=
drückt1
. Dieser Code entspricht1 1+1 1 1 1 1++++
.26
N:i~W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-
N
drückt eine Zeichenkette mit einem Zeilenumbruch.:i
wandelt es in eine Liste von Zeichencodes um und ergibt[10]
.~
packt es aus und gibt10
.W-
ist das Äquivalent zum Hinzufügen von eins. Durch 16-maliges Inkrementieren von 10 erhält man 26.27:
LLLLLLLLLLLLLLLLLLLLLLLLLLL0]0#
Suchen Sie den Index 0 in einer Liste, in der sich 0 am 27. Index befindet.
Charaktere noch verfügbar:
$%&*./1<>?@MOPQRSV[\^_`abcdefghjklmnopqrstuvwxyz{|}
Einige Hinweise zur möglichen Erweiterung:
Möglicherweise muss ich 10-20 ändern, um die Variablen für etwas anderes zu verwenden. Wenn ich Zahlen über 1 erhalte, kann ich
*
(und möglicherweise bitweise Operatoren) verwenden, aber ich glaube nicht, dass sie viel helfen werden.Ich habe immer noch
S
, was immer gut ist, das wird mir helfen.Wenn ich 26 auf ändere
N{}/iW-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-
, dann:
wird verfügbar sein.Ich kann einige leere Listen verschieben und mit vorhandenen Variablen mehr Nullen erhalten. Ich kann auch π bekommen, aber das scheint nicht sehr nützlich zu sein, es sei denn, ich kann es irgendwie in eine ganze Zahl umwandeln, und
m
(fürm[
) undi
sind bereits vergeben.In Bezug auf die Array-Manipulation kann ich:
%
oderf
*
|
:M1|2|3|
quelle
U)))))))))))))))))))))
und 22 sein,22
die1
für ein späteres Snippet frei wären .:i
in der Ziffernliste vorkommt (z . B.[P]1b
gibt3
).''
statt';
und dann genug verwenden(
, um auf die Ziffern zu setzen (also ungefähr 65k(
für jede Ziffer). Das würde;
etwas anderes bedeuten, aber ich bin mir nicht sicher, wie nützlich das ist.;
, aber im Moment kann ich nicht.Haskell , Punktzahl 13, 86 Bytes
Probieren Sie es online!
Vielen Dank an Ørjan Johansen, der einen Weg gefunden hat, meine Briefüberschneidung zu korrigieren und dabei die Punktzahl von 13 beizubehalten. (Auch, weil sie sich Mühe gaben, mich darüber zu benachrichtigen, während diese Antwort gelöscht wurde.)
pi/pi
ist1.0
.sum[]
wertet zu0
,0^0
zu1
undsum[1,1]
zu aus2
.3
sich9
einfach selbst dekodieren.length"eeeeeeeeee"
ergibt die Länge der Zeichenkette, die ist10
.2+2+2+2+2+2
ist12
.0xD
ist hexadezimal für13
.quelle