In dieser Aufgabe dürfen Sie ein nützliches Programm erstellen, um alles zu tun, was Sie innerhalb von 100 Zeichen schreiben können. Sie dürfen weniger, aber nicht mehr Zeichen verwenden.
Regeln, nur um vor Standardlücken zu schützen, die nicht mehr lustig sind:
Ihr Programm kann nicht auf das Internet zugreifen, es sei denn, es muss wirklich. Beispielsweise kann das Programm, das die am häufigsten gestellte Frage auf dieser Website anzeigt, das Internet verwenden, um diese Frage zu überprüfen. Es ist jedoch nicht gestattet, im Internet zu surfen, um die tatsächliche Quelle zu finden und diese auszuführen.
Ihr Programm kann kein Dolmetscher für die Sprache sein, in der es geschrieben wurde. Brainfuck-Dolmetscher in einer anderen Sprache als Brainfuck sind jedoch in Ordnung.
Ihr Programm kann keine externen Programme ausführen, die genau das tun, was Ihr Programm tut. Beispielsweise können Sie nicht ausführen
vim
und behaupten, dass Ihr Programmvim
implementiert ist.Ihr Programm kann für den Computer, auf dem es ausgeführt wird, und für andere Computer nicht gefährlich sein. Sie dürfen kein Programm wie
rmdir /
das schreiben (das Beispiel hier funktioniert absichtlich nicht, korrigieren Sie es nicht) und behaupten, es sei ein nützliches Programm, um alle Dateien auf dem Computer zu entfernen.Ihr Programm kann so langsam sein, wie Sie möchten, und so viele Ressourcen verwenden, wie Sie möchten, solange Sie nachweisen können, dass es das tut, was es beabsichtigt.
Sie dürfen keine Sprache speziell für diese Aufgabe erstellen. Sie dürfen jedoch einen Interpreter für Ihre erfundene Sprache in einer anderen Programmiersprache erstellen.
quelle
Antworten:
C - 47 Bytes
Das folgende Programm gibt jedes Dokument aus, das jemals in der Geschichte der Menschheit geschrieben wurde, zusammen mit jedem Dokument, das jemals geschrieben werden wird, und jede Menge interessanter Texte, die kein Mensch jemals finden wird (zusammen mit einem "kleinen bisschen" Müll dazwischen). Lass dir etwas Zeit. Außerdem werden jedes Mal, wenn Sie es ausführen, zuerst andere Texte ausgegeben! Wenn das nicht sinnvoll ist! (Und das alles innerhalb der halben Zeichengrenze!)
Wenn es Ihnen egal ist, jedes Mal etwas anderes auszugeben, brauchen Sie nur 41 Bytes !
Nicht ganz C99-konform, aber es funktioniert einwandfrei
gcc.exe (GCC) 4.7.0 20111220
.Die Regeln besagen
Kein Problem.
Einige Dinge, die dieses Programm ausgibt:
Wie Dennis bemerkt, könnte die Zufälligkeit des Algorithmus etwas verbessert werden (innerhalb der Zeichenbegrenzung), indem
rand()^rand()>>16
anstelle von verwendet wirdrand()
.quelle
rand()
ist nur pseudozufällig - es wird möglicherweise kein nützlicher Text erzeugt, bevor es eine Schleife durchläuft.x
haben Siex[i] == (x[i - 3] + x[i - 31] + c[i]) % 256
, woc[i]
0 mit einer Wahrscheinlichkeit von 0,75 und 1 mit einer Wahrscheinlichkeit von 0,25. Das bedeutet so ziemlich, dass es keines der Dinge erzeugen kann, die Sie erwähnt haben.rand()^rand()>>16
anstelle von plain verwendenrand()
. Wenn Sie nach Möglichkeiten suchen, Bytes zu sparen, entfernen Sieint
und%256
.unsigned char
beim Schreiben intern in einen konvertiert .BBC BASIC, 84 Zeichen
Zeichnet die Lösungen für Differentialgleichungen erster und zweiter Ordnung.
Nimmt als Benutzereingabe:
Inspiriert von einer Software zur Lösung von Differentialgleichungen namens Polymath, die ich während meines Studiums als Chemieingenieur verwendet habe. Wir würden verschiedene Gleichungen für Reaktanten und Produkte eingeben und sehen, wie sich das gesamte Reaktionssystem im Laufe der Zeit verändert. Eine sehr einfache Software (nicht viel komplexer als diese), aber für diesen Zweck viel praktischer als Excel. Leider kann ich keinen vollständigen Klon von Polymath in 100 Zeichen erstellen.
quelle
Mathematica 76
Dieses Programm erstellt ein Applet, das Informationen zu verschiedenen Eigenschaften für 240 Länder anzeigt. Es öffnet sich mit Informationen über die erwachsene Bevölkerung Afghanistans. Der Benutzer kann die Land- und Eigenschafteneinstellungen über Dropdown-Listen ändern.
Mathematica arbeitet reibungslos mit WolframAlpha zusammen.
Aus diesem Grund glaube ich, dass die Einreichung die Anforderung Nr. 1 der Herausforderung erfüllt: "Ihr Programm kann nicht auf das Internet zugreifen, es sei denn, es muss wirklich ".
Dieses eher bescheidene Applet nutzt einfach die vorhandenen Funktionen in der Mathematica-Sprache. Ein kurzes Video enthält einige zusätzliche Informationen zum Applet.
Unten finden Sie eine Liste der ersten 20 (von 223) mit Länderbezug. Mit einer zusätzlichen Programmierung kann man zusätzliche Informationen über Länder erhalten und diese Informationen in Mathematica analysieren.
quelle
Bash, 100 Bytes
Dieses Skript druckt einen kryptografisch sicheren Strom von Bytes. Es ist ein optionales Argument erforderlich, das die Anzahl der zu druckenden Bytes angibt. Standardmäßig ist die Ausgabe unendlich.
Nützlich in Fällen, in denen Lesen von
/dev/urandom
zu langsam ist.Benchmark
Dieses Skript generiert auf meinem i7-3770 bis zu 1,5 GiB pro Sekunde.
Das Lesen von
/dev/urandom
schafft es dagegen, kaum 1 GiB pro Minute zu erzeugen .Wie es funktioniert
head -c${1--1} /dev/zero
gibt die angegebene Anzahl von Null Bytes aus. Wenn keine Menge angegeben ist, ist sie${1--1}
gleich -1 und head gibt eine unendliche Menge aus.openssl enc -aes-128-ctr -pass file:/dev/random
verwendet AES-128 im Zählermodus, um die Null-Bytes zu verschlüsseln und liest das Passwort aus/dev/random
.tail -c+17
entfernt den 16-Byte-Header der Ausgabe.quelle
Javascript
Löse eine Gleichung (nun ja, nicht alle, aber sollte mit gemeinsamen Funktionen funktionieren ...)
Ohne ES6 (105 Zeichen):
Geben Sie einfach die linke Seite der Gleichung an, unter der Annahme, dass die rechte Seite Null ist.
Beispiel:
r("x*x-9")
kehrt zurück3
r("Math.sin(x)-1")
kehrt zurück1.5707963394347828
(pi / 2)r("Math.pow(2,x)-512")
kehrt zurück9
Warnung: Bei einigen Funktionen kann es zu Abweichungen kommen (oder wenn es keine Lösung gibt), und die Registerkarte Ihres Browsers kann eingefroren oder NaN zurückgegeben werden.
quelle
C - 99 Zeichen
Dieses Programm ermöglicht das Ver- und Entschlüsseln beliebiger Daten.
Verwendung
Zuerst ... kompiliere es!
Wenn Sie den Inhalt von
mypreciousdata.txt
mit dem Schlüssel verschlüsseln möchtenmysecretkey
, speichern Sie das Ergebnis inmyprotecteddata.txt
:Wenn Sie nun den dekodierten Inhalt von
myprotecteddata.txt
:Je länger der Schlüssel, desto sicherer!
Erläuterung
Den erweiterten und kommentierten Code finden Sie unten:
quelle
char
Typs (normalerweise 256) angepasst ist .GolfScript
Ich habe es geschafft, dies in genau 100 Zeichen zu quetschen!
Es nimmt die Eingabe von ROT-n-verschlüsseltem Text entgegen und gibt den dekodierten Text aus. (Entnommen hier .) Wenn zum Beispiel der Eingabe gegeben
pmttwxmwxtmwnxzwoziuuqvoxchhtmakwlmowtnabiksmfkpivom
, ist der Ausgang8hellopeopleofprogrammingpuzzlescodegolfstackexchange
.quelle
JavaScript
So generieren Sie eine eindeutige ID in JavascriptProduziert so etwas wie:
'h9d2f4aniimma7h1d3pbffi0foi8d3mf'
Zeichenfolgen mit 30-32 alphanumerischen Zeichen
Produziert so etwas wie:
'uq2sze67hsacq5mi'
Saitenlänge 14-16.
quelle
C ++ 57
Dieses Programm nimmt eine Zeicheneingabe und gibt seinen ASCII-Wert aus.
quelle
,:
Fortran - 85 Bytes
Liest eine Zahl ein und gibt die Summe der Ziffern aus . Nützlich bei Problemen mit Project Euler .
quelle