Ihre Aufgabe ist es, ein Programm, eine Funktion oder ein Snippet (ja, Snippets sind erlaubt) zu schreiben, das einfach eine ganze Zahl ausgibt. Allerdings müssen Sie in der Lage sein , Ihre Vorlage in Präfixe zu trennen , die auch verschiedene ganze Zahlen produzieren. Sie können keine Bytes verwenden, die in früheren Präfixen enthalten waren. Zum Beispiel können wir die Präfixe haben:
1 # 1 (Now we can't use 1)
1-6 # -5 (Now we can't use - or 6)
1-6/3 # -1 (Now we can't use / or 3)
1-6/3+0xA # 9 Final submission
Regeln
- Ihr Ziel ist es, zu erstellen, um zu versuchen, die einzigartigsten Ganzzahlen zu erstellen, während sie nahe Null bleiben.
- Das Punktesystem ist
((number of unique integers)**3)/(sum of absolute values)
, je höher Ihre Punktzahl, desto besser. Das obige Beispiel .
- Das Punktesystem ist
- Es sollten mindestens zwei eindeutige Ganzzahlen vorhanden sein (keine Division durch Null!)
- Bitte formatieren Sie Ihre Antwort wie folgt:
# Language, \$(4^{3})/16 = 4\$
1-6/3+0xA (the full program)
- Erwähnen Sie, wenn Ihr Beitrag aus Ausschnitten besteht, die einen Wert, Funktionen oder vollständige Programme ergeben.
- Listen Sie jedes der Präfixe und (optional) eine Erklärung für ihre Funktionsweise auf.
number
code-challenge
restricted-source
Scherzen
quelle
quelle
print 123-len(open(__file__).read())
gefolgt von#
einem der bisher nicht verwendeten Bytes (mit Ausnahme einiger Steuerzeichen), wobei die Präfixe diese Bytes abschneiden. Stellen Sie 123 so ein, dass der Bereich der Ausgaben um 0 zentriert ist. Um eine bessere Punktzahl zu erzielen, kann der nichtkommentierte Teil des Programms mit nur den 7 verschiedenen Zeichen umgeschrieben werden, die für Python universell sind. Ist das alles gültig?Antworten:
TI-BASIC (TI-84 + CE),2383/ 14161=952,0
Die 256 Bytes in TI-BASIC gliedern sich folgendermaßen:
"
,→
und Newline Zeichen , die Pause - Strings.Die Zeichenfolge enthält alle 237 zulässigen Bytes in der ersten Kategorie, die noch nicht in enthalten sind
118-length(
.Das Programm berechnet 238 verschiedene Ganzzahlen von 118 bis -119. Die Punktzahl ist daher2383∑118n = - 119| n |= 952.
quelle
mean({1,2,3
, was sich ergänzen würdemean({1,2,3})
. Zeichenfolgen sind auch abgeschlossen:Disp "Hi!
Vervollständigt bisDisp "Hi!"
. Daher ist das endgültige Schlusszitat nicht erforderlichvim, 14³ / 53 = 51,77
Probieren Sie es online! (alle Präfixe)
Nervenzusammenbruch:
quelle
<esc>
repräsentiert die Escape-Taste und<c-char>
repräsentiert Strg + ZeichenSprache , 256³ / 16384 = 1024
Der Quellcode der Lösung kann wie folgt beschrieben werden:
Jeder Lauf von identischen Bytes in Kombination mit den vorherigen Läufen bildet ein Präfix, und das vollständige Programm besteht aus allen oben beschriebenen verketteten Strings.
Dies ist eine optimale Punktzahl. (Die Programme geben alle Zahlen von -127 bis einschließlich 128 aus.)
Um diese Antwort zu erstellen, habe ich zuerst die Java-Antwort hier kopiert , um Brainfuck-Programme zum Drucken einer Zeichenfolge zu generieren. Ich habe es mit dieser
main
Funktion ausgeführt:Dann habe ich dieses Ruby-Skript ausgeführt, um den hier gezeigten lesbaren Text zu generieren:
Das größte Programm ist 3594571896764310192036774345469579167648804468538578264427 Byte lang (und druckt
-90
).quelle
(Wir danken diesem interessanten Dienstprogramm für die Konvertierung.) Das oben Gesagte ergibt effektiv den folgenden Code:
... wodurch ein Proxy erstellt wird, der die Länge eines Eigenschaftsnamens in eine Zahl umwandelt. Das erste Präfix endet ein Zeichen nach dem
.
und verwendet nur 6 eindeutige Zeichen, mit Ausnahme des.$
. Die nächsten 63 Slices hängen 63 weitere Einzelbytezeichen an, die in JS-Objekteigenschaftsnamen gültig sind. Die nächsten 44 Slices hängen zwei Byte gültige Zeichen an, die aus nicht verwendeten Bytes bestehen. Die endgültigen Scheiben hängen&''
,|""**""
und,~{}
. Die erste Scheibe zurückkehrt-2
, die zweite2
, dann-3
, dann3
,-4
,4
,-5
, usw. bis zu den letzten drei Scheiben sind , die0
,1
, und-1
.quelle
In diesem Fall verwenden wir Brain-Flak-Schnipsel, damit wir uns mit dem Wert befassen, den sie nicht leisten.
Gesamtes Programm:
Präfixe und Ausgabe
Probieren Sie es online!
Erläuterung
Dies ist wahrscheinlich das Beste, was eine Brain-Flak-Antwort bekommen kann, da wir alle Zeichen verbraucht haben, die Brain-Flak interessiert, und wir können die Zahlen nicht näher an Null gruppieren.
Das erste Snippet ist
<>
:<>
Ändert den Stack, wird aber ansonsten zu Null ausgewertet. Wir beginnen also mit Null. Ab hier addieren wir(())
dies zu einem. Wir hätten das auch tun()
können, aber wenn wir jetzt eine drücken, können wir uns später mit{}
und daran erinnern[]
. Dies ist so ziemlich der einzige Weg{}
und[]
kann Wert schaffen, also tun wir das. Da es eine Sache auf dem Stapel gibt, die[]
als 1 gilt, subtrahieren wir 3 von der Gesamtsumme,[[][][]]
indem wir uns auf -2 bringen. Zuletzt verwenden wir,{}
um das zu platzieren, was wir zuvor gepusht haben und auf -1 gebracht haben.quelle
Nach zwei Stunden Versuch und Irrtum bekam ich endlich alle ganzen Zahlen von
-4
bis+5
(und7
).Dies ist ein Snippet mit den folgenden Präfix-Snippets:
Probieren Sie es online!
quelle
2*2
auf22&7
(-3 & 6 anstelle von -3 & 4) ändern , um die Wiederholung von zu korrigieren*
.'
und_
verwenden,cmp(cmp,())
anstattcmp('','_')
Wenn das hilfreich ist.--[-1-1-1-1-1]
, aber das verbessert Ihre Punktzahl nicht wirklich.Charge, 176³ / 7744 = 704
Das erste Präfix enthält den Doppelpunkt und gibt die Nummer -88 aus. Nachfolgende Präfixe geben aufsteigende Zahlen aus und das endgültige Programm gibt 87 aus.
quelle
Alle mit Escapezeichen versehenen Zeichen sind Einzelbytes. Ich habe das Programm in dieser Form dargestellt, um das Kopieren und Einfügen zu vereinfachen. Dieser Link führt zum vollständigen Programm ohne maskierte Zeichen. Wie zu sehen ist, gibt es viele Platzhalter für die verwendeten nicht druckbaren Zeichen.
Der verwendete Ansatz ähnelt der TI-BASIC-Antwort von Lirtosiast , obwohl ich meine Antwort geschrieben habe, bevor ich die anderen Einträge durchgesehen habe . Das Kabel funktioniert wie folgt:
Die Zeichenfolge besteht aus jedem Einzelbyte-Zeichen außer 0 (NULL), 127 (Backspace) und den Boilerplate-Zeichen (
-C\|l"
). Auf diese Weise kann jedes Zeichen der Zeichenfolge einzeln entfernt werden, um Zeichenfolgen mit einer Länge von 248 bis 0 zu erzeugen. Diese Programme liefern Ergebnisse im Bereich [-124 - 124] mit einer Summe der absoluten Werte von 15500.Der Code wurde mit diesem Programm generiert :
Und die Summe der Zahlen, die aus jedem der abgeschnittenen Programme generiert wurden, wurde mit diesem Programm gefunden :
quelle
Jelly , 984
Probieren Sie es online!
Sie können die Präfixe (durch einen doppelten Zeilenumbruch getrennt) hier sehen .
Die gedruckten Zahlen lauten in der Reihenfolge:
quelle
Präfixe:
Nicht optimal, aber das Beste, was ich persönlich mit dieser speziellen Struktur finden konnte.
quelle
Hier sind die Präfixe und was sie ausgeben
quelle
Probieren Sie es online!
Legt fest,
n
was-20, -19, ..., 18, 19
abhängig von der Länge des Typs produziert wirdG
.Das kleinste Präfix
G
sieht aus wie:: G = G
, gefolgt von den sortierten Importen und Definitionen.Das größte Präfix von
G
sieht aus wie , ähnlich vorangestellt.:: G = GABCFHIJKMNOPQRUVWXYZcjkqxyz_0123456789`
quelle
Probieren Sie es online!
Verwendet wie die anderen Einträge die Länge eines Strings. Zeichen im Start-Snippet sowie
\r
(Textbereiche spielen damit keine gute Rolle ) und{
(Zeichenfolge-Interpolationszeichen) werden von der Zeichenfolge ausgeschlossen.Das erste Programm ist
_Ê-122}$($"
, dass jedes Programm ein Zeichen länger ist, mit Ausnahme des Hinzufügens\\
.quelle
122
mit ,#z
aber das würde Ihre Gäste nicht verbessern.Dies ist ein Ausschnitt.
Die einzelnen Präfix-Snippets sind:
Pythons Bitoperatoren behandelt negative ganze Zahlen als Zweierkomplement mit unbegrenzten
1
s nach rechts, so-5
wird behandelt , als...11111011
, die , wenn sie geODERten mit...000010
gibt...11111011
unverändert.quelle
Prefix
Herausforderung passt nicht zur Formelstruktur von Excelquelle
Runic Verzauberungen , 117 3 /3422 = 468,034
Probieren Sie es online!
Und das Präfix .
Abzüge [-58,58] inklusive.
Verwendet eine ähnliche Taktik wie andere Eingaben, verwendet eine zunehmend längere Zeichenfolge, ermittelt deren Länge, subtrahiert
B
(Dezimalwert von66
) und gibt das Ergebnis aus. Verwendet ein nicht druckbares Zeichen(wird im Codeblock angezeigt,
€
da dies anscheinend€
in HTML ausgewertet wird), um den Bytewert zu verwenden0x80
(und einen ansonsten unbrauchbaren zu verbrauchen0x00
) und einen weiteren Wert zu erzielen. Nur Bytewerte bis zu 127, die in keiner Weise dargestellt werden können , sind10
und13
, da sie dazu führen würden, dass das Programm zwei Zeilen lang ist und vom Befehlszeiger nicht richtig gelesen wird.quelle
Charcoal ,
95³ / 2256 = 380,0421196³ / 2304 = 384Das erste Präfix besteht aus den ersten 7 Bytes und gibt die Nummer aus
47
. Probieren Sie es online! Nachfolgende Präfixe geben absteigende Zahlen und die endgültigen Programmausgaben aus-48
. Probieren Sie es online! Bearbeiten: Erhöht die Punktzahl um 3,95789, dank nur @ ASCII.quelle