To wyzwanie jest hołdem dla zwycięzcy Najlepszego Obrazu na Oscars 2017 La La Land Moonlight!
Twoim wyzwaniem jest wydrukowanie tekstu
La La Landzatrzymaj się na sekundę, a następnie zmień tekst na wyświetlany
Tekst oryginalny (La La Land) musi mieć przekreślenie . Można to osiągnąć przez wyczyszczenie ekranu, rysowanie na oryginalnym tekście lub za pomocą innych sprytnych rozwiązań.La La LandMoonlight
To jest golf golfowy, więc wygrywa najmniej bajtów. Obowiązują standardowe zasady gry w golfa.
code-golf
string
kolmogorov-complexity
animation
vikarjramun
źródło
źródło
La La La(nd)
wzórOdpowiedzi:
Galaretka , 31 bajtów
Testowane z Xterm i
LANG=en_US
. Nie działa w TIO z kilku powodów.Hexdump
Weryfikacja
tło
Ta odpowiedź wykorzystuje znaki sterujące i sekwencje specjalne ANSI .
0d
(<CR>
) służy do powrotu do początku wkładki po wydrukowaniu La La Land .9b 39 6d
(<CSI> 9 m
) służy do aktywacji przekreślonego tekstu przed wydrukowaniem La La Land po raz drugi.9b 6d
(<CSI> m
) służy do resetowania pierwszego planu i tła do domyślnego trybu, wyłączając w ten sposób przekreślanie, przed wydrukowaniem Moonlight .Jak to działa
źródło
Vim, 37 bajtów
Dość proste rozwiązanie.
Oto jego animacja:
źródło
gs
śpi przez sekundę.HTML,
153148 bajtówKorzystanie z animacji CSS. Testowane tylko w Firefox i Chrome.
źródło
@keyframes
deklaracji jako ostatnią i usunąć dwa zamykające nawiasy klamrowe.}
brakuje, więc niestety nie można tego zrobić.HTML + JavaScript, 18 + 59 = 77 bajtów
Niestety wydaje się, że nie ma skutecznego sposobu na ponowne użycie
O.innerHTML
...źródło
setTimeout('a=O.innerHTML;a=a.strike()+" Moonlight"',1e3)
zadziała?a
nie spowoduje modyfikacjiO.innerHTML
.Oktawa,
8166 bajtów15 bajtów zapisanych dzięki @Stewie
Demo online tutaj .
Podczas gdy demo pokazuje dwa oddzielne wykresy, po uruchomieniu w wersji MATLAB na komputery stacjonarne pokazuje pierwszy wykres, czeka 1 sekundę, a następnie dodaje drugi ciąg do tego samego wykresu.
Ponieważ Octave nie obsługuje
axes
przekreślania tekstu, zamiast tego zdecydowałem się wyświetlić tekst w obiekcie na rysunku i wyświetlić „przekreślenie” poprzez wyświetlenie'--------'
na początku tekstu początkowego (pomysł początkowy autorstwa @Stewie). Wcześniej nakreśliłemline
obiekt, przez który trzeba przejść'La La Land'
źródło
text(0,.5,'La La Land');pause(1);text(0,.5,'---------- Moonlight')
.'-'*8+
zamiast myślników?.
)Bash,
70, 6966 bajtów-4 pkt dzięki Riley
echo La La Land;sleep 1;echo -e "\r\e[9mLa La Land\e[0m Moonlight"
Podziękowania dla odpowiedzi Sylvaina Pineau na AskUbuntu za przekreślenie
źródło
\r
drugiegoecho
zamiastclear
. Ponadto nie potrzebujesz miejsca przed drugimecho
.clear;
powinienem iść pierwszy. I masz niepotrzebne miejsce; echo
.\e[A
, więc nieclear
jest potrzebne. Aby uzyskać więcej informacji na ten temat, zobacz mnie .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 bajtów
W trybie graficznym narysuj rzeczywistą linię przez tekst. Oto jak to wygląda w QB64 :
Kod powinien być dość zrozumiały, ale tutaj jest wersja bez golfisty:
źródło
MATL, 46 bajtów
Ponieważ MATL nie obsługuje kodów sterujących ani formatowania tekstu, to rozwiązanie po prostu przełącza się między
'La La Land'
i'-----------'
tak szybko, jak to możliwe, aby symulować przekreślony tekst.Wyjaśnienie
źródło
Bash + pv , 50 bajtów
Opiera się to na odpowiedzi Bash @ DigitalTrauma .
♪
reprezentuje powrót karetki ( 0x0d ),›
bajt CSI ( 0x9b ).Hexdump
Weryfikacja
Jak to działa
printf powtarza ciąg formatu tyle razy, ile potrzeba, aby wyczerpać inne argumenty. Ponieważ występuje jedno wystąpienie
%b
i dwa argumenty (9m\\0
im\ Moonlight
), wygeneruje następujący strumień bajtów.Działa to następująco.
\r
przesuwa kursor na początek linii.La La Land
jest drukowane dosłownie.\x9b9m
aktywuje przekreślony tekst.\0
ustawia znacznik końca linii dlapv -0
.\rLa La Land
robi to samo co poprzednio.\x9bm
przywróć domyślny tryb pierwszego planu i tła, wyłączając przekreślanie.Moonlight
jest drukowane dosłownie.Na koniec
pv -0L1
drukuje jedną zerowaną linię na sekundę, wprowadzając pożądane opóźnienie.źródło
♪
pomógł ci w grze w golfa, czy może chciałeś go użyć w La La Land? Lubię to!♪
czasami jest stylizowany, jest po prostu szczęśliwym zbiegiem okoliczności.pv
zamiastsleep
jak wszyscy inni jest piękne.pv
jest tym, co wziąłem z połączonej odpowiedzi Bash, więc tak naprawdę nie mogę tego przypisać.HTML + JavaScript, 10 + 63 = 73 bajty
źródło
PHP (
867569 bajtów)Używa znaku UTF-8 U + 0336 do przekreślenia.
Edycja: Zapisano 17 bajtów wraz z sugestiami skomentowanymi przez @Titus
źródło
sleep
zawsze zwraca 0; więc możesz po prostu zrobićsleep(1)?:" ̶L̶a̶ ̶L̶a̶ ̶L̶a̶n̶d̶ Moonlight"
(-3 bajty).\r
zamiast\033[10D
zapisywać 6 bajtów i umieszczenie go w ostatnim ciągu oszczędza kolejne 4.U+0336
do przekreślenia używa znaku UTF-8 ”.La La Land<?=
zamiast<?="La La Land",
oszczędza kolejne 3 bajty.Pyth - 47 bajtów
Robi teraz przekreślenie.
źródło
"
+1 z przodu.<exmpty line>
? Sugerowałbym<pre>
tagi.C
8786 bajtówWersja bez golfa:
źródło
char
i*
.f()
w wersji bez golfa, nie?f()
.HTML + JavaScript, 100 bajtów
źródło
GNU sed + sleep,
6358 bajtówEdycja: zapisano 5 bajtów na podstawie komentarzy Digital Trauma
Oczekiwanie między dwiema instrukcjami wydruku nie może być wykonane przy użyciu samego seda i jako takie dzwonię
sleep 1
. Możliwe jest wykonanie wywołania systemowego z sed za pomocąe
polecenia, które jest rozszerzeniem GNU.Aby utworzyć tekst przekreślony (wiersz 3), do każdego znaku dołączana jest „kombinacja nakładki o długim skoku”, U + 0336 . Następnie przesuwam kursor w górę o 1 linię, skutecznie zastępując stary tekst podczas drukowania czegoś nowego, używając tak zwanych sekwencji ucieczki ANSI . Są one interpretowane przez terminal jako specjalne polecenia formatujące. Więcej informacji na ich temat można znaleźć tutaj .
Wyjaśnienie:
źródło
\c
miłym znalezisku! Jeśli chodzi o ten specjalny Unicode, po raz pierwszy o nim słyszę, ale rzeczywiście działa. Kiedy jest drukowany przez tę stronę, jest łączony zs
separatorem poleceń:
, więc trochę dziwne, aby to zobaczyć na początku.Java 7,
207206171139 bajtówTrochę oszukuję z tą pierwszą odpowiedzią, ponieważ używam przekreślonego Unicode .
Wyjaśnienie:
Java 7 (z AWT),
444429341 bajtówPrzekreślony 444 jest nadal regularny 444; (
Ponieważ konsola Java nie ma znaczników takich jak przekreślanie, będziesz musiał użyć Java AWT. I cóż, jeśli myślałeś, że Java Console jest już gadatliwa, to jest jeszcze gorzej (wiem, wiem, większość z was nawet nie wyobrażała sobie, że Java 7 jest gorsza ..)
Wyjaśnienie:
Dane wyjściowe gif:
źródło
String[] a
i użyć1e3
zamiast1000
1e3
, to jest podwójne iThread.sleep
oczekuje długo.1000
jest krótszy niż(long)1e3
. :)Swing
, nieSpring
, prawda? Prawie miałem zawał serca! Wiosna w codegolf ... Ponadto, aby zaoszczędzić bajty, możesz użyć AWT zamiast Swing.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 bajtów
Do przekreślenia użyj Unicode (U + 0336), ponieważ terminal macOS nie obsługuje tej
\e[9m
komendy.źródło
Arduino,
332331 bajtówNie konkuruje, tylko dla zabawy.
Zestawienie materiałów:
źródło
#include
Python3, 99 bajtów
źródło
l = 'La La Land
nie mogłeś ominąć+s
znaków -2? .Bash + pv, 62
źródło
SmileBASIC, 45 bajtów
Jeden bajt mniej dzięki sztuczce magicznej 12Me21.
O ile mi wiadomo SB nie ma przekreślonych postaci, więc użyłem
GLINE
zamiast tego. Oczywiście zakłada wyraźny wyświetlacz, użyj wACLS
razie potrzeby.źródło
AHK, 102 bajty
Oszukałem trochę, aby uzyskać przekreślony tekst, używając łączącego znak Unicode nakładki o długim pociągnięciu . Może to powodować dziwny wygląd w zależności od konfiguracji. Notatnik daje dobry wygląd.
AutoHotkey nie jest najwyraźniej najskuteczniejszym językiem, ale było to zabawne wyzwanie. Uważaj, gdzie go uruchomisz, ponieważ nie tworzy on własnego wyświetlacza i czyści cały tekst dowolnego aktywnego okna.
źródło
Szybki, 392 bajty
Swift + UIKit nie jest naprawdę idealny do gry w golfa! Uruchom to na placu zabaw XCode, a wynik zostanie wyświetlony w okienku podglądu.
źródło
l.textColor=UIColor.red
konieczne?Galaretka , 41 bajtów
Nie działa w przypadku tłumacza online.
źródło
Python (137 bajtów)
źródło
import
. Sugerowałbym również zapisanie „La La Land” jako zmiennej.TI-BASIC,
5753 bajtówZauważ, że używa to zdolności TI-84 + CE w najnowszym systemie operacyjnym do wstrzymania na 1 sekundę. To zwróci błąd syntaktyczny na TI-84 +. Do testowania możesz pominąć 1 sekundową pauzę, usuwając tę linię. Pamiętaj też, aby najpierw nacisnąć Zoom, 6, abyś był w ustawieniach domyślnych okna, w przeciwnym razie polecenie linii nie zadziała.
źródło
SpecBAS - 58 bajtów
Każdy znak ma 8 x 8 pikseli, więc rysuje linię od 0,4 do względnej pozycji 80,4 (80 dodane do pierwszej współrzędnej i 0 do drugiej, aby pozostała na tej samej linii).
źródło
OLEJ , 76 bajtów
Zamień na
⎋
znak ucieczki i↩︎
znak powrotu karetki. OIL nie ma żadnego polecenia uśpienia, więc emuluję go za pomocą pętli, która odlicza od 89999 do 1. To zajmuje około sekundy na moim komputerze, ale może nie na twoim.Pierwsze 3 linie są ignorowane przez interpretera, a następnie drukuje (
4
) drugą linię (linia 1; „La La Land”). Poniższa struktura to pętla, która zmniejsza dużą liczbę na końcu, aż będzie równa 1. Na końcu po prostu wypisuję pierwsze 3 linie.źródło
PHP, nie konkuruje (64 bajty)
używa UTF-8:
--
oznaczaU+0336
- ale jestem całkiem pewien, że nie działa samodzielnie.Jeśli nie, spróbuj
~"1I"
lub~I1
zamiast--
(+3 lub +1 bajtów).Nie ma czasu, aby zapisać go do pliku lub dowiedzieć się, jak ustawić konsolę na UTF-8; więc nie mogłem przetestować żadnego z nich; ale ktokolwiek może: proszę dać mi znać, czy jest to pełna BS, czy nie.
źródło
PowerShell, 63 bajty
Działa tylko w programie PowerShell ISE. Nie konkuruje, ponieważ przekreślenie jest przesunięte o jeden znak i nie mogę tego naprawić.
źródło