Sie müssen ein Textstereogramm anhand einer Eingabezeichenfolge generieren, die einen Textabschnitt, eine leere Zeile und dann die ausgeblendete Nachricht enthält. Das Ergebnis wird als Absatzpaar angezeigt, wobei einer mit unterschiedlichem Abstand dazu führt, dass der Effekt bei stereografischer Betrachtung erhöht wird (eine Erklärung finden Sie hier ).
Beispiel
Eingang:
I invented vegetarianism. It is a diet involving no meat, just vegetables. It is also common in cows - they are awesome.
vegetarianism. is awesome.
Ausgabe:
I invented I invented
vegetarianism. vegetarianism.
It is a diet It is a diet
involving no involving no
meat, just meat, just
vegetables. It vegetables. It
is also common is also common
in cows - they in cows - they
are awesome. are awesome.
Boni
- Option hinzufügen, um zwischen parallelen und gekreuzten Augen als Benutzereingabe zu wählen (-20)
- Einstellbare Spaltenbreite als Benutzereingabe (-50)
Dies ist Codegolf, also gewinnt der kürzeste Code nach den Boni.
Antworten:
Bash, sed:
228223197(242 - 70) = 172Befindet sich das Skript in einer ausführbaren Datei mit dem Namen "stereo", geben Sie Folgendes ein
column_width ist eine Zahl; 25-45 wird funktionieren, Standard ist 35.
page_width ist eine Zahl, sollte etwa doppelt so groß sein wie column_width, Standard ist 80
Verwenden Sie "r l" als viertes Argument, wenn Sie mit den Augen schauen. Die Standardeinstellung ist "l r", die für die parallele Anzeige eingerichtet ist.
BEARBEITEN: Umschreiben, um die Datei in ein Wort pro Zeile zu teilen, und am Ende wieder zusammensetzen. Hinweis: Reserviert das Zeichen "=" für die eigene Verwendung. Alle "=" Zeichen in der Eingabedatei werden zu Leerzeichen.
BEARBEITEN: Wenn Ihre Nachricht ein "=" - Zeichen enthält, können Sie ein anderes Symbol für das zu verwendende Skript auswählen, indem Sie es als fünften Parameter angeben.
Beispiel
Eingabe: vegetarianism.txt:
Ergebnis
./stereo vegetarianism.txt 32 72 "l r": | expand (mit dem Doppelpunkt als internes Arbeitssymbol)
./stereo washington.txt 35 75 "l r" | expand
Das "| expand" ist nicht notwendig, aber wenn die Ausgabe um 4 Stellen verschoben wird, werden die TABs falsch behandelt. Es könnte zu einem Preis von 7 Bytes in das Skript eingefügt werden.
ImageMagick-Variante
Ersetzen der letzten Zeile durch einen ImageMagick-Befehl von Text zu Bild:
In diesem Fall sind das "r" und das "l" für die gegenseitige Anzeige von Augen und Augenpaaren getrennte Argumente:
./im_stereo vegetarianism.txt 40 80 lr =
(Quelle: simplesystems.org )
EDIT 3: ImageMagick-Variation hinzugefügt.
quelle
TeX 212
Ich benutze ein Schriftsatzsystem, kein ASCII. Die Spaltenbreite kann durch Ändern
90pt
in der vierten Zeile geändert werden , aber ich weiß nicht, ob dies ausreicht, um den Rabatt von 50 Byte zu erhalten. Der Abstand zwischen den beiden Kopien des Textes kann durch Ändern der9pt
ebenfalls in der vierten Zeile geändert werden . Der Code kann wahrscheinlich kürzer gemacht werden. Man kann jede neue Zeile durch ein einzelnes Leerzeichen ersetzen, aber nicht vollständig entfernen.Nach dem Anruf
tex filename.tex
des Terminals wird der Benutzer aufgefordert, den Haupttext einzugeben und dann erneut eine Liste der zu verschiebenden Wörter einzugeben. Keine Leerzeile dazwischen. Die (durch Leerzeichen getrennte) Liste der Wörter in der zweiten Zeile sollte genauso erscheinen wie im Haupttext (die Interpunktion wird wie ein Buchstabe behandelt, nur durch Leerzeichen begrenzte Wörter).quelle
Javascript 391 (441 - 50)
(Mein erster Code Golf)
Ergebnis
Langer Code:
quelle
Q='length'
und dann Dinge ersetzen wieA.length
mitA[Q]
.Javascript 493 (Mindestanforderungen)
Dieser Code erstellt zwei Zeilenarrays (links und rechts), ordnet sie in einer Zeichenfolge an und gibt sie auf der
f12
Konsole aus.Dies ist nur eine minimale Antwort, die nicht zum Gewinnen gedacht ist.
quelle
L=b=>b.length;c=console.log;p=prompt;r=(l=p().split(g=" ")).slice(),m=p().split(g),s=(f=[]).slice(),n=w=a="";for(i=0;i<L(l);i++)l[i]==m[0]&&(m.shift(),l[i]=g+r[i],r[i]+=g),L(l[i])+1>w&&(w=L(l[i])+1);for(;L(l);){f[L(f)]="";for(s[L(s)]="";L(l)&&L(f[L(f)-1])+L(l[0])<w;)f[L(f)-1]+=l[0]+g,s[L(s)-1]+=r[0]+g,l.shift(),r.shift();f[L(f)-1]+=g.repeat(w-L(f[L(f)-1]))}for(c(f,s);L(f);)a+=f[0]+s[0]+"\n",f.shift(),s.shift();c(a)
GolfScript 209 (279 -50 -20)
Dies ist mein erstes großes GolfScript-Programm. Es würde mich nicht wundern, wenn es Optimierungen geben würde. Beide Boni werden unterstützt; Es wird erwartet, dass sie nach den Nachrichteneingaben gefunden werden, wie:
Wenn Sie diese Datei in GolfScript gespeichert
input
und heruntergeladen haben , können Sie das Skript folgendermaßen aufrufen:Golf gespielt
Ungolfed
quelle
JavaScript 391
quelle