Diese Herausforderung ist eine Hommage an den Gewinner von Best Picture bei den Oscars 2017, La La Land Moonlight!
Ihre Herausforderung besteht darin, den Text zu drucken
La La LandHalten Sie eine Sekunde an und ändern Sie dann den anzuzeigenden Text
Der Originaltext (La La Land) muss durchgestrichen sein . Dies kann entweder durch Löschen des Bildschirms, Zeichnen über dem Originaltext oder durch andere clevere Lösungen erreicht werden.La La LandMondschein
Dies ist ein Code-Golf, also gewinnt das niedrigste Byte. Es gelten die Standardregeln für Code-Golf.
code-golf
string
kolmogorov-complexity
animation
vikarjramun
quelle
quelle
La La La(nd)
Muster verwenden könnenAntworten:
Gelee , 31 Bytes
Getestet mit xterm und
LANG=en_US
. Funktioniert aus mehreren Gründen nicht mit TIO.Hexdump
Nachprüfung
Hintergrund
Diese Antwort verwendet Steuerzeichen und ANSI-Escape-Sequenzen .
0d
(<CR>
) wird verwendet, um nach dem Drucken von La La Land zum Anfang des Liners zurückzukehren .9b 39 6d
(<CSI> 9 m
) wird verwendet, um durchgestrichenen Text zu aktivieren, bevor La La Land zum zweiten Mal gedruckt wird.9b 6d
(<CSI> m
) wird verwendet, um den Vordergrund und den Hintergrund auf den Standardmodus zurückzusetzen und so das Durchstreichen zu deaktivieren, bevor Moonlight gedruckt wird .Wie es funktioniert
quelle
Vim, 37 Bytes
Eine ziemlich einfache Lösung.
Hier ist eine Animation davon:
quelle
gs
schläft für eine Sekunde.HTML,
153148 BytesCSS-Animation verwenden. Nur unter Firefox und Chrome getestet.
quelle
@keyframes
Deklarationen zuletzt einfügen und die beiden schließenden geschweiften Klammern entfernen.}
fehlt. Dies ist leider nicht möglich.HTML + JavaScript, 18 + 59 = 77 Byte
Leider scheint es keinen effizienten Weg zur Wiederverwendung zu geben
O.innerHTML
...quelle
setTimeout('a=O.innerHTML;a=a.strike()+" Moonlight"',1e3)
funktionierena
es nicht ändern würdeO.innerHTML
.Oktave,
8166 Bytes15 Bytes gespart dank @Stewie
Online Demo hier .
Während die Demo zwei separate Diagramme zeigt, wird bei Ausführung in der Desktop-Version von MATLAB das erste Diagramm angezeigt, es wird 1 Sekunde gewartet und anschließend wird die zweite Zeichenfolge demselben Diagramm hinzugefügt.
Da Octave das Durchstreichen von Text nicht unterstützt, habe ich mich stattdessen dafür entschieden, den Text innerhalb eines
axes
Objekts in einer Figur anzuzeigen und ein "Durchstreichen" durch Anzeigen'--------'
über dem ursprünglichen Text (ursprüngliche Idee von @Stewie) anzuzeigen. Zuvor hatte ich tatsächlich einline
Objekt geplottet , das durchgestrichen werden sollte'La La Land'
quelle
text(0,.5,'La La Land');pause(1);text(0,.5,'---------- Moonlight')
.'-'*8+
anstelle der Bindestriche tun ?.
)Bash,
70, 69,66 Bytes-4 Punkte danke an Riley
echo La La Land;sleep 1;echo -e "\r\e[9mLa La Land\e[0m Moonlight"
Dank an Sylvain Pineaus Antwort auf AskUbuntu für den Durchschlag
quelle
\r
in der Sekundeecho
stattclear
. Außerdem brauchen Sie den Platz nicht vor dem zweitenecho
.clear;
sollte zuerst gehen. Und Sie haben einen unnötigen Platz in; echo
.\e[A
, sodass keine Änderungclear
erforderlich ist. Weitere Infos dazu gibt es bei mir .s="La La Land";echo $s;sleep 1;echo -e "\e[A\e[9m$s\e[0m Moonlight"
echo -n La La Land;sleep 1;echo -e "\r\e[9mLa La Land\e[0mMoonlight"
QBasic, 61 Bytes
Zeichnen Sie im Grafikmodus eine tatsächliche Linie durch den Text. So sieht es in QB64 aus :
Der Code sollte ziemlich selbsterklärend sein, aber hier ist eine ungolfed Version:
quelle
MATL, 46 Bytes
Da MATL keine Unterstützung für Steuercodes oder Textformatierungen bietet, wechselt diese Lösung einfach
'La La Land'
und'-----------'
so schnell wie möglich, um durchgestrichenen Text zu simulieren.Erläuterung
quelle
Bash + pv , 50 Bytes
Dies baut auf der Bash-Antwort von @ DigitalTrauma auf .
♪
repräsentiert einen Wagenrücklauf ( 0x0d ),›
ein CSI-Byte ( 0x9b ).Hexdump
Nachprüfung
Wie es funktioniert
printf wiederholt die Formatzeichenfolge so oft, bis die anderen Argumente erschöpft sind. Da es ein Vorkommen von
%b
und zwei Argumente (9m\\0
undm\ Moonlight
) gibt, wird der folgende Byte-Stream erzeugt.Dies bewirkt Folgendes.
\r
Bringt den Cursor an den Zeilenanfang.La La Land
wird wörtlich gedruckt.\x9b9m
Aktiviert durchgestrichenen Text.\0
setzt einen Zeilenende-Marker fürpv -0
.\rLa La Land
macht das selbe wie vorher.\x9bm
Vordergrund und Hintergrund in den Standardmodus zurücksetzen und Durchstreichen deaktivieren.Moonlight
wird wörtlich gedruckt.Zum Schluss wird
pv -0L1
eine nullterminierte Zeile pro Sekunde gedruckt, wodurch die gewünschte Verzögerung eingeführt wird.quelle
♪
der Ihnen beim Golfen geholfen hat, oder wollten Sie ihn speziell bei La La Land einsetzen? Ich mag das!♪
manchmal stilisiert ist, ist nur ein glücklicher Zufall.pv
anstelle vonsleep
wie jeder andere ist wunderschön.pv
stammt aus der verknüpften Bash-Antwort, daher kann ich das nicht wirklich würdigen .HTML + JavaScript, 10 + 63 = 73 Bytes
quelle
PHP (
867569 Bytes)Verwendet das UTF-8-Zeichen U + 0336 zum Durchstreichen.
Bearbeiten: Gespeicherte 17 Bytes mit den Vorschlägen @Titus kommentiert
quelle
sleep
gibt immer 0 zurück; Sie können es also einfach tunsleep(1)?:" ̶L̶a̶ ̶L̶a̶ ̶L̶a̶n̶d̶ Moonlight"
(-3 Bytes).\r
Anstatt\033[10D
6 Bytes zu speichern und in die letzte Zeichenfolge aufzunehmen, werden weitere 4U+0336
für das Durchstreichen" erwähnen.La La Land<?=
stattdessen<?="La La Land",
noch 3 Bytes.Pyth - 47 Bytes
Tut das Durchgestrichene jetzt.
quelle
"
vorne für +1.<exmpty line>
? Ich würde<pre>
Tags vorschlagen .C
8786 BytesUngolfed-Version:
quelle
char
und*
.f()
die ungolfed Version aufrufen, nein?f()
.HTML + JavaScript, 100 Bytes
quelle
GNU sed + sleep,
6358 BytesBearbeiten: 5 Bytes gespeichert, basierend auf den Kommentaren von Digital Trauma
Das Warten zwischen zwei print-Anweisungen kann nicht mit sed alleine durchgeführt werden, und als solches rufe ich an
sleep 1
. Es ist möglich, einen Systemaufruf von sed mit deme
Befehl auszuführen , der eine GNU-Erweiterung ist.Um einen durchgestrichenen Text (Zeile 3) zu erstellen , wird an jedes Zeichen eine "kombinierende Überlagerung mit langen Strichen" ( U + 0336) angehängt. Danach bewege ich den Cursor eine Zeile nach oben und ersetze den alten Text beim Drucken von etwas Neuem mithilfe der sogenannten ANSI-Escape-Sequenzen . Diese werden vom Terminal als spezielle Formatierungsbefehle interpretiert. Weitere Informationen dazu finden Sie hier .
Erläuterung:
quelle
\c
, nette Entdeckung! Was diesen speziellen Unicode betrifft, ist es das erste Mal, dass ich davon höre, aber es funktioniert tatsächlich. Wenn es von dieser Seite gedruckt wird, wird sie mit dem Befehl kombiniertens
Abscheider:
, so etwas seltsam , dass zunächst zu sehen.Java 7,
207206171139 BytesIch betrüge ein bisschen mit dieser ersten Antwort, weil ich einen durchgestrichenen Unicode verwende .
Erläuterung:
Java 7 (mit AWT),
444429341 BytesDurchgestrichen 444 ist immer noch regulär 444; (
Da die Java-Konsole kein Markup wie Durchgestrichen hat, müssen Sie Java AWT verwenden. Und nun, wenn Sie dachten, Java Console wäre bereits ausführlich, dann ist dies noch schlimmer (ich weiß, ich weiß, die meisten von Ihnen konnten sich nicht vorstellen, dass Java 7 noch schlimmer sein könnte.)
Erläuterung:
Ausgangsgif:
quelle
String[] a
und1e3
stattdessen verwenden1000
1e3
, ist das ein Doppelgänger undThread.sleep
erwartet einen langen.1000
ist kürzer als(long)1e3
. :)Swing
,Spring
nicht wahr? Ich hatte fast einen Herzinfarkt! Frühling in einem Codegolf ... Um Bytes zu sparen, können Sie AWT anstelle von Swing verwenden.void m(){new Frame(){public void paint(Graphics g){g.drawString("La La Land",99,99);try{Thread.sleep(1000);}catch(Exception e){}AttributedString s=new AttributedString("La La Land Moonlight");s.addAttribute(java.awt.font.TextAttribute.STRIKETHROUGH,1>0,0,10);g.drawString(s.getIterator(),99,99);}}.show();}
Python 3, 90 Bytes
Verwenden Sie Unicode (U + 0336) zum Durchstreichen, da das macOS-Terminal diesen
\e[9m
Befehl nicht unterstützt .quelle
Arduino,
332331 BytesNicht konkurrieren, nur zum Spaß.
Stückliste:
quelle
#include
Python3, 99 Bytes
quelle
l = 'La La Land
können Sie die+s
Zeichen für -2 nicht vermeiden ? .Bash + pv, 62
quelle
SmileBASIC, 45 Bytes
Ein Byte weniger dank 12Me21s Zaubertrick.
Soweit ich weiß, hat SB keine durchgestrichenen Zeichen, also habe ich
GLINE
stattdessen verwendet. Offensichtlich setzt eine übersichtliche Anzeige voraus,ACLS
wenn nötig.quelle
AHK, 102 Bytes
Ich habe ein bisschen geschummelt, um durchgestrichenen Text zu erhalten, indem ich das kombinierte Unicode-Zeichen für Overlays mit langen Strichen verwendet habe . Dies kann je nach Konfiguration zu einem merkwürdigen Erscheinungsbild führen. Der Notizblock sieht gut aus.
AutoHotkey ist eindeutig nicht die effizienteste Sprache dafür, aber es war eine lustige Herausforderung. Seien Sie vorsichtig, wo Sie es ausführen, da es keine eigene Anzeige erstellt und den gesamten Text des aktiven Fensters löscht.
quelle
Schnell, 392 Bytes
Swift + UIKit ist wirklich nicht ideal zum Golfen! Führen Sie dies in einem XCode-Bereich aus, und das Ergebnis wird im Vorschaufenster angezeigt.
quelle
l.textColor=UIColor.red
nötig?Jelly , 41 Bytes
Funktioniert nicht mit Online-Dolmetscher.
quelle
Python (137 Bytes)
quelle
import
. Ich würde auch vorschlagen, "La La Land" als Variable zu speichern.TI-BASIC,
5753 BytesBeachten Sie, dass hierbei die TI-84 + CE-Funktion mit dem neuesten Betriebssystem verwendet wird, um eine Sekunde lang anzuhalten. Dadurch wird ein Synthaxfehler auf dem TI-84 + zurückgegeben. Zum Testen können Sie die Pause von 1 Sekunde auslassen, indem Sie diese Zeile entfernen. Denken Sie auch daran, zuerst Zoom 6 zu drücken, damit Sie die Standard-Fenstereinstellungen verwenden, da sonst der Zeilenbefehl nicht funktioniert.
quelle
SpecBAS - 58 Bytes
Jedes Zeichen hat eine Größe von 8 x 8 Pixel. Zeichnet also eine Linie von 0,4 bis zur relativen Position 80,4 (80 zur ersten Koordinate hinzugefügt und 0 zur zweiten, damit es auf derselben Linie bleibt).
quelle
OIL , 76 Bytes
Ersetzen Sie das
⎋
durch ein Escape-Zeichen und↩︎
einen Wagenrücklauf. Da OIL keinerlei Schlafbefehle enthält, emuliere ich es mit einer Schleife, die von 89999 bis 1 herunterzählt. Auf meinem Computer dauert es ungefähr eine Sekunde, auf Ihrem jedoch möglicherweise nicht.Die ersten 3 Zeilen werden vom Interpreter ignoriert, dann wird
4
die zweite Zeile (Zeile 1; "La La Land") ausgegeben (). Die folgende Struktur ist die Schleife, die die große Zahl am Ende dekrementiert, bis sie gleich 1 ist. Am Ende drucke ich nur die ersten 3 Zeilen.quelle
PHP, nicht konkurrierend (64 Bytes)
benutzt UTF-8:
--
steht fürU+0336
- aber ich bin mir ziemlich sicher, dass es nicht alleine funktioniert.Wenn dies nicht der Fall ist, versuchen Sie
~"1I"
oder~I1
anstelle von--
(+3 oder +1 Byte).Keine Zeit, es in einer Datei zu speichern oder herauszufinden, wie meine Konsole auf UTF-8 eingestellt wird; so konnte ich keines von beiden testen; Aber wer kann: Bitte lassen Sie mich wissen, ob es sich um eine vollständige BS handelt oder nicht.
quelle
Powershell, 63 Bytes
Funktioniert nur in PowerShell ISE. Nicht konkurrierend, da das Durchstreichen um einen Buchstaben verschoben wird und ich es nicht reparieren kann.
quelle