To mój pierwszy konkurs golfowy.
Co musisz zrobić
Zbuduj mi, w jak najkrótszej ilości bajtów, mój system zdalnego sterowania AC. W moim pokoju jest teraz za zimno i brakuje mi pilota.
Nie chcę, żebyś budował to dosłownie czy coś, po prostu golf to:
Powolny przyrost temperatury, zaczynający się od 40 stopni, a kończący się dokładnie na 72. Czas przyrostu musi zawsze wynosić 500 milisów na przyrost. Na koniec może poczekać kolejne 500 ms. Wolałbym jednak, żeby przestał. Sam przyrost musi wzrosnąć o dwa za każdym razem, podobnie jak mój pilot.
Nie powinieneś wyczyścić ekranu. Powinieneś mieć nowe linie.
Co powinno się stać?
Przykładowe dane wyjściowe (nie należy wypisywać wszystkiego w nawiasach).
40
(wait 500 millis)
42
(wait 500 millis)
44
(..repeat until 72..)
72
(stop or wait 500ms)
Pamiętaj, to jest mój pierwszy golf, więc przepraszam, jeśli jest to zbyt trudne do gry w golfa. :(
Powodzenia, golfiści!
Odpowiedzi:
Narzędzia Bash + Linux, 19
seq
generuje dane liczbowe.pv
ratelimits to 2 linie / sek.źródło
-q
Tłumienie wyjścia przechodzi do STDERR, więc nie sądzę, żebyś go potrzebował.Minecraft 1.9.0+,
204162 bajty +5836282420 bloków =262240232186182 blytówTo rozwiązanie jest obniżone i nie można go zobaczyć w całości na jednym, a nawet dwóch zrzutach ekranu. Wykorzystuje dwa usterki i narusza kolejne dwie funkcje gry
W tym rozwiązaniu zastosowano te same zasady, co poniżej, tylko 4 bloki bardziej kompaktowej konstrukcji.
Nadużywa faktu, że bloków poleceń Łańcucha (zielone bloki) nie można zasilać przez kamień czerwony, a tylko przez singal z impulsu bloku poleceń (pomarańczowy).
Nadużywa faktu, że całkowite wydłużenie tłoków zajmuje 0,30 sekundy, a redstone potrzebuje tylko 0,10 s, aby zarejestrować sygnał.
Nadużywa również podwójnej usterki, aby wyłączyć timer (TNT): czerwony kamień obok timera (TNT) jest nie tylko zasilany, ale także myśli, że TNT jest kolejnym czerwonym kamieniem i zasila go.
Oprócz tych wszystkich nadużyć, skracacz sygnału (rzecz pod TNT) jest jednorazowego użytku, po zasileniu zmienia kształt, umożliwiając przekazywanie sygnału przez „inkrementator” (najwyższy pomarańczowy blok)
Trochę wyjaśnienia na temat funkcjonalności różnych części można znaleźć w starszych rozwiązaniach (ale najlepsze w tym poniżej). Możesz także wypróbować offline! (uproszczone rozwiązanie zwiększające się o 4, działa tylko w wersji 1.11+) , uruchamiając to polecenie w bloku poleceń .
Stare rozwiązanie, Minecraft 1.9.0+, 186 blytes:
Ponieważ TNT zwykle eksploduje po 3.0s w Minecraft, ten musi zostać umieszczony za pomocą polecenia (
/setblock
) z określonym bezpiecznikiem. Używa również bardziej zwartej konstrukcji do usuwania zbędnego bloku poleceń (zawierającego 42 bajty) i redstone w stosunku do starszych wersji. Jestem pewien, że nie może być niżej ...Starsze rozwiązanie, Minecraft 1.9.0+, 232 blytes:
Ups, dowiedziałem się, że te starsze rozwiązania zwiększają się o 4 ...
Używa funkcji łańcucha bloków poleceń 1.9 (zielony blok) do zapisywania bloków. Używa również bardziej kompaktowego skracacza sygnału niż w starszych rozwiązaniach
Nawet starsze rozwiązanie, Minecraft 1.7.0+, 240 blytów:
Używa bardziej kompaktowego timera (TNT) niż pierwszego rozwiązania (poniżej).
Najstarsze rozwiązanie, Minecraft 1.7.0+, 262 blytes:
Jest to tak długie ze względu na sposób, w jaki Minecraft obsługuje zmienne:
Aby zdefiniować zmienną (int):
scoreboard objectives add <variable> dummy
Aby ustawić wartość zmiennej (każda jednostka, w tym gracze, ma swoją własną wartość zmiennej):
scoreboard players set <entity> <variable> <value>
*
może być użyty jako<entity>
do wybrania wszystkich jednostek i zapisania bajtów.można używać tylko zdefiniowanych zmiennych
wartość zmiennej musi być ustawiona na liczbę, a nie na zmienną
Aby zwiększyć wartość var1 o var2:
scoreboard players operation <entity> var1 += <entity> var2
<entity>
musi być pojedynczym bytem, np.@p
, nie*
Zrzuty ekranu są moje, podwójnie licencjonowane na WTFPL i jakiej licencji SE decyduje się dziś użyć (obecnie
cc by-sa 3.0 with attribution required
) :-)źródło
Vim,
24, 23 bajty / naciśnięcia klawiszyJeden bajt zapisany dzięki @Kritixi Lithos!
Napisane z mojego telefonu, przetestowane w vimie mobilnym (co najwyraźniej jest prawdziwe).
Oto gif z tego:
A oto wyjaśnienie polecenia po poleceniu:
źródło
s
Wms
jest opcjonalne, można go usunąć, aby zapisać bajt :)JavaScript (ES6), 52 bajty
źródło
f=(i=40)=>setTimeout(i>70||f,500,i+2,console.log(i))
. Niestety wciąż te same 52 bajty.50
bajty, ponieważ nie trzeba liczyć naf=
podstawie meta konsensusu, że anonimowe deklaracje funkcji są dozwolone?f=
jest wymagany, ponieważ funkcja musi się wywołać (jako pierwszy parametr dosetTimeout
).Galaretka ,
1312 bajtówWypróbuj online! Program Jelly jest zawinięty w skrypt Bash, aby poprzedzać każdą linię wyjścia znacznikiem czasu.
Jak to działa
Po ostatniej iteracji wartość końcowa 72 jest drukowana domyślnie i program kończy działanie.
źródło
Perl 6 , 30 bajtów
Przepraszam, że wygląda jak kod bez golfa, nie widzę sposobu, aby go skrócić ...
Wersja, która zatrzymuje się zaraz po ostatnim numerze, miałaby 37 bajtów:
źródło
36
?.say&sleep(.5) for 40,42...72
29 bajtów{
Wspornik następstwie innej ekspresji bez białych jest interpretowane jako rozpoczęciem mieszania ( „asocjacyjny”) indeksu tablicy. Perl 6 jest taki ścisły, ponieważ jego gramatyka została celowo zaprojektowana, aby umożliwić jednoprzebiegową analizę kodu źródłowego (prawie) bez cofania.Pyth - 12 bajtów
Bardzo proste, używa pętli for od 0-17.
źródło
TI-Basic (tylko CE lub CSE), 16 bajtów
Zauważ, że wiele poleceń to tokeny jednobajtowe.
źródło
For(
,Pause
,End
, A dwukropek na początku linii są wszystkie pojedyncze bajty.MATL , 14 bajtów
Wypróbuj w MATL Online! Może być konieczne ponowne załadowanie strony, jeśli początkowo nie działa.
Wyjaśnienie
Stara wersja (przed zmianą specyfikacji), czyszczenie ekranu
Wypróbuj w MATL Online!
źródło
Dyalog APL , 20 bajtów
{
anonimowa funkcja⎕DL
opóźnienie....5⊣
pół (sekunda) zamiast wartości⎕←
drukuj (z nową linią)⍵
argument}¨
stosowane do każdego z38+
trzydzieści osiem plus2×
dwa razy⍳17
liczby całkowite od 1 do 17źródło
C skompilowany z Clangiem 3.8.1 w systemie Linux,
625958 bajtów2 bajty zapisane dzięki @ranisalt
59 bajtów
62 bajtów
źródło
** ... **
znaczników, podczas gdy tradycyjny nagłówek na tej stronie# ...
. Zredagowałem twoją odpowiedź, abyś mógł zobaczyć, jak to się robi.s<72
zapisuje kolejny bajt.Scratch, 5 bloków
(miejsce na dysku 56.0kb)
(przepraszam za niską rozdzielczość!)
Naprawdę oczywiste. Wartość zmiennej jest wyświetlana w polu na „scenie”.
źródło
Mathematica, 34 bajty
Pełny program Nie pobiera danych wejściowych i wyjściowych do STDOUT.
źródło
R, 49 bajtów
Bardzo trywialne rozwiązanie, ale załatwia sprawę.
źródło
for
pętlą ma dokładnie taką samą długość.Perl 6 , 27 bajtów
say
zwracaTrue
, która jest1
dzielona na wartość liczbową po podzieleniu przez2
.Zhenanigany w Unicode mogą mieć maksymalnie 23 znaki:
Ale to 29 bajtów zakodowanych w UTF-8.
źródło
Python 2,
57 5655 bajtówEDYTOWAĆ:
-1 bajt dzięki Mega Man
-1 bajt dzięki Flp.Tkc
źródło
Ruby, 33 bajty
źródło
C #, 95 bajtów
Jest to prosta pętla, na końcu czeka dodatkowe 500 ms.
źródło
QBIC , 21 bajtów
QBIC uruchamia pętlę FOR, od 44 do 72 i zwiększając licznik o 4 w każdej pętli. Następnie śpi przez 1 sekundę. QBasic nie ma bardziej szczegółowej kontroli
sleep
, więc dodałem jako argument.
symulację dawania.5
.źródło
Kotlin, 47 bajtów
Wydaje mi się, że w opisie problemu nie powiedziano, że rozwiązania powinny faktycznie zawierać przyrost o dwa, więc
40+2*i
jest to tutaj legalne.Jeśli napisane jako zwykłe źródło Kotlin z
main
:(77 bajtów)
UPD : W Kotlin 1.3
args:Array<String>
można go usunąć, więc jest 18 bajtów mniej.W Skrypcie Kotlina byłby cały program
(47 bajtów)
źródło
Ruby 31 bajtów
Wypróbuj online!
źródło
Haskell, 67 bajtów
Jeśli chcesz korzystać tylko z ghc, możesz zaoszczędzić kilka bajtów, importując
GHC.Conc
i używającthreadDelay
zamiastusleep
.źródło
php, 38 bajtów
używa znaku podkreślenia jako separatora. Uruchom z
-nr
.źródło
Clojure, 54 bajty
Trzecie seplenienie ftw. Po prostu iteruje w zakresie, drukuje i śpi każdą iterację. Śpi na końcu.
Nie golfowany:
Wersja, która nie śpi na końcu, 66 bajtów
Uwaga: są to pełne programy, ponieważ instrukcje nie określają. Dodaj bajt do każdego, jeśli wymagana jest funkcja.
źródło
Rakieta 46 bajtów
Nie golfowany:
Polecenie do uruchomienia:
(f)
źródło
Oktawa,
3835 bajtówZaoszczędź 3 bajty dzięki @LuisMendo, zmieniając
endfor
naend
Wypróbuj online!
Jestem nowy w Octave, więc to rozwiązanie może być jeszcze bardziej rozbudowane. Wszelkie wskazówki są mile widziane!
Bez golfa
źródło
Python 2,
5758 bajtówEdytować
Liczone jako 57 bajtów na mojej poręczności, ale TIO mówi teraz 58, że wróciłem na własną maszynę, więc to moja ostateczna oferta. Co ciekawe, TIO wydaje się nie respektować limitu czasu i po prostu czeka, a następnie drukuje całą listę za jednym razem. Działa na QPython dla Androida i Python 2 na moim systemie Ubuntu, więc to mi wystarczy.
Wypróbuj online!
W Pythonie 3 byłoby
5859, więc i tak nie bije @ sonrad10.źródło
range(...)
R
4444 bajtówProsta pętla for, prawdopodobnie istnieje bardziej golfista. (Poza tym przekreślone 44 jest nadal regularne 44 ...)
źródło
F #, 60 bajtów
async{for i in 40..2..72 do printfn"%d"i;do!Async.Sleep 500}
Jest to wyrażenie asynchroniczne, w celu uruchomienia należy przekazać je do
Async.Start
lubAsync.RunSynchronously
.źródło
Noodel , niekonkurencyjne 10 bajtów
Nie można konkurować, ponieważ Noodel urodził się po utworzeniu wyzwania :(
Spróbuj:)
Jak to działa
Nie ma wersji Noodel, która obsługuje składnię zastosowaną w tej odpowiedzi. Oto poprawna wersja:
źródło