Wählen Sie Ihren berühmten Lieblingsinformatiker oder Pionier der Informatik, der 1942 oder früher geboren wurde (1943 markiert den Beginn der Entwicklung des „ersten“ Computers ). Sie sollten über eine Wikipedia-Seite oder eine andere Website verfügen, auf der ihr Geburtsjahr und ihre Leistungen im Zusammenhang mit der Informatik aufgeführt sind. Sie können das Gleiche wie eine andere Person wählen, es wird jedoch empfohlen, eine neue Person auszuwählen.
Nehmen Sie einen Namen, unter dem sie allgemein bekannt sind. Dies wird höchstwahrscheinlich der Vor- und Nachname sein, es können jedoch auch Abkürzungen oder Zwischennamen vorkommen, wenn dies häufiger vorkommt. Zum Beispiel für Tony Hoare beide Tony Hoare
und C. A. R. Hoare
wäre akzeptabel.
Alle Zeichen im Namen müssen druckbares ASCII sein . Wenn der Name Zeichen enthält, die nicht in ASCII gedruckt werden können, ist es in Ordnung, wenn Sie eine ungefähre Angabe treffen. zB Kurt Godel
statt Kurt Gödel
.
Nehmen Sie den Satz eindeutiger Zeichen im Namen (z. B. C. ARHoare
) und verschieben Sie sie bis zum Geburtsjahr Ihres Wissenschaftlers auf der druckbaren ASCII-Skala, um von dort ~
in den Weltraum zu gelangen. (Fügen Sie im Allgemeinen das Geburtsjahr Modulo 95 hinzu.) Dadurch erhalten Sie (höchstwahrscheinlich) einen neuen Satz druckbarer ASCII-Zeichen.
Zum Beispiel wurde CAR Hoare im Jahr 1934 geboren, so dass jede Zeichenverschiebung C. ARHoare
um 1934 (34 mod 95) Zeichen ergibt ePBctj2$5(
.
Dieses Stack-Snippet übernimmt die gesamte Verschiebung für Sie:
function go() {var name = document.getElementById("name").value;var year = parseInt(document.getElementById("year").value);var unique = {};for (var i = 0; i < name.length; i++) { unique[name.charAt(i)] = true; } var result = ''; for (var char in unique) { result += String.fromCharCode((char.charCodeAt(0) - 32 + year) % 95 + 32); } document.getElementById("result").value = result; }
Name: <input type="text" id="name" value="C. A. R. Hoare"><br>
Birth Year: <input type="text" id="year" value="1934"><br>
<button type="button" onclick="go()">Ok</button><br>
Result: <input type="text" id="result" readonly>
Herausforderung
Verwenden Sie diesen Satz und nur diesen Satz (keine Tabulatoren, keine Zeilenumbrüche) von versetzten druckbaren ASCII-Zeichen, und schreiben Sie ein Programm, das Hello, [name]!
nach stdout oder der nächstgelegenen Alternative gedruckt wird. Dabei [name]
handelt es sich um denselben exakten Namen, den Sie oben ausgewählt und verschoben haben, um Ihre Programmzeichen zu erhalten. Sie können mehrere Zeichen aus dem Satz verwenden oder einige überhaupt nicht verwenden. Beispielsweise wird das theoretische Programm PetBee($25
gedruckt Hello, C. A. R. Hoare!
.
Wertung
Ihre Punktzahl entspricht Ihrer Codegröße in Byte, multipliziert mit der Anzahl der eindeutigen Zeichen in dem von Ihnen ausgewählten Namen. Die niedrigste Wunde gewinnt.
quelle
Rear Admiral Grace Murray Hopper, United States Navy, (Retired), Doctor of Philosophy
. Geboren 1906. Wäre das in Ordnung?Rear Admiral Grace Murray Hopper
. Denken Sie daran, dass Ihre Codegröße mit der Anzahl der eindeutigen Zeichen im Namen multipliziert wird, sodass ein längerer Name nicht unbedingt besser ist.Antworten:
Schlaflosigkeit,
1039998 * 8 = 784George Boole , 1815
Alle 5 Programme haben dieselbe Länge (98) und denselben Ausgang.
Druckt
Hello, George Boole!
Schlaflosigkeit, 103 * 6 = 618 (wahrscheinlich optimal und einzigartig)
Wenn
G Boole
( George Boole , 1815) akzeptabel ist ...Druckt
Hello, G Boole!
Schlaflosigkeit,
9492898583 * 10 = 830Kurt Godel, 1906.
Druckt
Hello, Kurt Godel!
Ich habe ein Programm geschrieben, um nach der Lösung zu suchen. Meine zweite Version des Programms sollte näher am Optimum liegen als meine erste Version.
Laut @Martin Büttner's Nitpick (
100928885 Zeichen, gleicher Zeichensatz):Druckt
Hello, Kurt Goedel!
Dolmetscher
quelle
Gödel
Verwendung nur des lateinischen Alphabets istGoedel
. ;)CJam,
230117115114113110107106 Bytes * 13 = 1378Teste es hier.
Ich habe gewählt
Edsger Dijkstra
, Jahrgang 1930, das gibt mirc#2&$1>b()* 3
(wen ich wirklich nur gewählt habe, weil er der erste war, den ich gefunden habe, dessen Name nützliche Zeichen für CJam lieferte; ich habe seitdem ein Dutzend Namen überprüft, und keiner sah so vielversprechend aus).Der Code im Grunde baut nur den ASCII - Codes verwenden
1
,2
,3
,*
,#
(Potenzierung) und(
,)
(Abnahme, Zuwachs) und wandelt sie in ein Zeichen mitc
. Um einige Zeichen zu speichern, kann ich manchmal ein früheres Zeichen mit kopieren$
(0$
kopiert das oberste Stapelelement,1$
kopiert das zweithöchste Stapelelement usw.).Hier ist die Aufteilung des Codes in Zeichen (dies kann auch ausgeführt werden):
quelle
Marbelous , 83 Bytes * 10 = 830
Ich habe ausgewählt,
R Kowalski, 1941
welches ich verwenden darf:{It9A+6=53
Dieses ist ein bisschen komplexer als die alte Antwort (siehe unten), da viele Murmeln mehrere Geräte durchlaufen. Insgesamt hat Marmor nur ein paar Dinge hinzugefügt, bevor er gedruckt wird. Da ich keine Subtraktion oder niedrige Ziffern hatte, mussten die unteren ASCII-Codes durch Addition von zwei Murmeln mit hohem Wert gebildet werden, da dies zu Modulo führt. (Ich habe es
=3
als Deflektor verwendet, da es jeden Marmor ungleich 3 nach rechts drückt und wie eine süße Katze aussieht.)Ausgabe:
Hello, R Kowalski!
alte antwort:
Marbelous , 113 * 17 = 1921
Marbelous ist hier in Ordnung, da Marmor, der von der Tafel fällt, aufgrund seiner 2D-Beschaffenheit gedruckt wird. Er benötigt jedoch ein paar Ziffern und ein wenig Arithmetik, damit das Borad nicht zu groß wird.
Ich habe als verfügbaren Zeichensatz gewählt,
Philip D. Estridge, 1937
wer nachgibtu./26EiSj9:8*-+
. Die tatsächlich verwendeten Zeichen sind.+-245689E
Die Tafel ist ziemlich einfach, die ersten 3 Zeilen sind Literale, jede Zweiergruppe ist ein Hexadezimalwert, die vierte Zeile sind arithmetische Operationen zur Bildung der ASCII-Codes, die aufgrund der begrenzten Zeichensätze nicht explizit geschrieben werden konnten.
Ausgabe:
Hello, Philip Donald Estridge!
Sie können es hier ausprobieren!
Ich werde jetzt nach einem möglichen besseren Kandidaten suchen, da es so aussieht, als wäre Marbelous hier tatsächlich wettbewerbsfähig.
quelle
G Boole
mit 105 Zeichen auskommen * 6 - Ich denke, es sollte eine Begrenzung geben, um wie viel der Name gekürzt werden kann.Using this set and only this set (no tabs, no newlines) of shifted printable ASCII characters
Brainfuck, 1846 * 12 = 22152
Nur um eine andere Sprache als CJam zu haben. Benötigt die Originalspezifikation Brainfuck mit Byte-Datentyp, der bei 256 überläuft.
Verwendet nur 2 Zeichen:
+
um die aktuelle Zelle.
zu erhöhen und um die aktuelle Zelle auszugeben.Ausgabe
Dank geht an Coredump, weil er in seiner Antwort Folgendes enthüllt hat:
quelle
"Hallo Niklaus Emil Wirth!" (Befunge-98, 222 × 14 = 3108)
Aus Wikipedia :
Bei einer Verschiebung von 34
Niklaus Emil Wirth
(18 Zeichen, 14 Unikate) ergibt sich alsp,./$86Bg0,/By,57+
.Code (hier ausprobieren ):
Nervenzusammenbruch:
In der letzten Zeile wird ein HALT-Zeichen (
@
) am Zeilenanfang eingefügt . Wenn das Steuerelement zu diesem Punkt zurückspringt, stoppt das Programm. Dies sollte eigentlich nicht notwendig sein, da das@
Zeichen bei (5,0) noch vorhanden ist und nichts ausgegeben werden soll, bevor es erreicht ist. Der einzige Online-Befunge-Interpreter, der diese Monstrosität ausführt, funktioniert jedoch ohne sie nicht ordnungsgemäß.Es ist tatsächlich möglich, eine funktionierende Lösung mit nur
Niklaus Wirth
(12 eindeutigen Zeichenp,./$86By,57+
) zu erstellen, aber der Code ist viel, viel länger.(Getaggt als Befunge-98, da Befunge-93 auf eine Breite von 80 Zeichen begrenzt ist.)
quelle
CJam, 323 Bytes * 10 = 3230
Ausgabe:
CJam, 662 Bytes * 10 = 6620
8700Nicht um zu gewinnen, sondern nur weil es möglich erscheint. Es wurde nur verwendet
2e(c
.Ausgabe:
Generator
Die einfache Antwort
222(((((((((((c
(generiert vonq{i222_@-'(*'c}%
) hat 3420 Bytes.quelle
e_
externe Zahlenliterale verwenden können.2
? Oder durch die anderen (Nutz-) Zeichen verwendetB
,5
und$
? (ZB können Sie den zweiten bis vierten Platz und die zweite und dritte Periode mit2$
sowieA
mit bekommen2$((
.)CJam, 16 *
307288 =49124608Zeigt an:
Dies ist meine erste Antwort mit CJam, also kann dies sicherlich besser Golf spielen (jeder Hinweis ist willkommen).
Hier ist ein Utility-Code, den ich verwendet habe. Da ich den Zeichensatz für einige andere Namen berechnet habe, kann dies für jemanden nützlich sein, der CJam besser kennt (oder für eine andere Sprache).
quelle
Brainf_ck - 723 * 12 = 8676
Ich habe einen Crawl aus der Wikipedia- Liste der Informatiker durchgeführt und die Geburtsjahre und längsten Namen aller dort aufgeführten Personen gesammelt. Ich habe ein Programm geschrieben, mit dem ich all diese Programme überfliegen und alle möglichen in einer gemeinsamen Sprache finden kann. Leider war ich nicht in der Lage irgendwelche Namen zu finden, unterstützen könnte
echo;
,alert()
,console.log()
(ich hoffe kann),print
odermain
.Ich wollte meine unformatierten Crawling-Daten hauptsächlich für den Fall freigeben, dass jemand auf ähnliche Weise nach anderen Sprachen suchen wollte (Hinweis: Möglicherweise sind sie ungenau und unvollständig): Crawling-Daten .
EDIT : Neue Crawl-Paste mit ca. 40 neuen Namen aus der Liste der Computer-Leute und der Liste der Pioniere in der Informatik .
EDIT : Manuelles Aufräumen der Liste.
Ich fand heraus, dass Jean David Ichbiah (1940), Chefdesigner von Ada,
+-.
(die kürzeste von drei Personen, die dazu zur Verfügung steht). Ich habe diesen BF-Code für ihn generiert.Alexander Keewatin Dewdney lieferte die am besten verwendbaren BF-Zeichen (
+.<>
), kam aber etwas über meiner Antwort herein. Niemand, den ich fand, stellte zur Verfügung.[]
.quelle
Rubin 1,8 - 250 × 18 = 4500
Zeichen zur Verfügung:
Ausgabe:
Anatolii Karatsuba , geboren 1937, ist am bekanntesten für seine Beiträge auf dem Gebiet der analytischen Zahlentheorie (ein Gebiet, das ich persönlich mag), einschließlich des Karatsuba-Algorithmus , einer Methode zur schnellen Multiplikation beliebiger Präzisionsoperanden.
Dies ist der erste und einzige Name, den ich ausprobiert habe.
quelle
GolfScript (125 * 14 = 1750)
Online-Demo
Douglas Engelbart (1925 - 2013) ist vielleicht am bekanntesten für die "Mutter aller Demos" . Sein Name und sein Geburtsjahr geben Zeichen an
!&(),-./9]^z{~
, von denen diese Lösung Gebrauch macht&()-./9]^~
Die Grundstruktur des Codes besteht darin,
build list of numbers](-
dass viele Zahlen mit der leeren Zeichenfolge, die auf dem Stapel beginnt, in einem Array abgelegt werden, diese Zeichenfolge dann herausgezogen und mit der Typheraufstufung von verwendet wird-
, um das Zahlenarray in eine Zeichenfolge umzuwandeln.Da es keinen Zugriff auf Elemente unter dem Stapel gibt, habe ich ein C # -Programm geschrieben, um kurze Ausschnitte zu finden, die eine bestimmte Ganzzahl über dem Stapel aufnehmen und die nächste erforderliche Ganzzahl hinzufügen. Dies führte zu einem kleinen Problem, als das Snippet für
69
(E
) mit endete-
und das Snippet für110
(n
) mit begann9
: Die Verwendung eines längeren Snippets für kostete ein Zeichen110
.quelle
CaneCode ,
458410 * 16 =73286560Entsprechendes BF:
Ausgänge:
CaneCode ist nur eine direkte Symbolersetzung von Brainfuck, wo jeweils
12348
entsprechen+-><.
. Ich habe ungefähr 2 Stunden damit verbracht, nach einem Kurznamen zu suchen, der+-.
für normales Brainfuck galt, ohne Erfolg.Jack Elton Bresenham , Erfinder des Bresenhamschen Linienalgorithmus und geboren 1937, gibt die folgenden Zeichen an:
Während
5
([
) verfügbar ist, bedeutet das Fehlen von6
(]
) leider, dass der Code den 100-stelligen Bereich (für Kleinbuchstaben) immer noch langsam erhöhen musste.quelle
(Fisch) , 163 · 15 = 2445
Ausgänge:
Ivar Hjalmar Jacobson , geboren 1939, wurde dank der Crawl-Daten von BMac gefunden . Er liefert die Zeichen
> <> ist wie Befunge eine auf 2D-Stacks basierende Sprache. Die nützlichen Befehle> <> sind:
*+24567
für Arithmetik (Note,47
die ein4
und ein7
auf den Stapel drückt , nicht47
))
für größer als (nützlich für immer1
):
zum Duplizieren der Oberseite des Stapelso
für die Ausgabe;
zur Programmbeendigungp
ist auch gut zum Nachdenken, aber ich konnte mir keine gute Verwendung dafür vorstellen.>
ist ein weiterer Befehl> <>, der den Programmfluss nach rechts leitet, aber da das Programm bereits in dieser Richtung ausgeführt wird, wurde es nicht benötigt.quelle