Zbliża się Halloween, święto, po którym większość ludzi musi zrezygnować z pustej diety z cukrem.
Napisz program, który przyjmuje dodatnią liczbę całkowitą. Jeśli liczba całkowita jest mniejsza niż 31 (od 1 do 30), wypuść tę latarnię z latarnią ASCII, patrząc w prawo, jakby czekała na Halloween:
_____I_____
| | | | | | |
| | |^| |^| |
| | | |^| | |
| | |VvVvV| |
|_|_|_|_|_|_|
Jeśli wartość wejściowa to 31 (data Halloween jest włączona), wypisz tę samą lampę ASCII-o'-latarnię, ale patrząc w lewo:
_____I_____
| | | | | | |
| |^| |^| | |
| | |^| | | |
| |VvVvV| | |
|_|_|_|_|_|_|
Jeśli wartość wejściowa jest większa niż 31, wyjmij nadętą latarnię ASCII-o'-latarnię, która prawdopodobnie zjadła za dużo cukierków. Może stawić czoła albo w lewo, albo w prawo, ponieważ queasyness może dezorientować. Więc wyjście:
_____I_____
| | | | | | |
| |o| |o| | |
| | |^| | | |
| |XXXXX| | |
|_|_|_|_|_|_|
lub
_____I_____
| | | | | | |
| | |o| |o| |
| | | |^| | |
| | |XXXXX| |
|_|_|_|_|_|_|
Którykolwiek wolisz. Może być nawet różny dla różnych liczb powyżej 31.
Najkrótszy kod w bajtach wygrywa.
źródło
x^n>30
sztuczka początkowo mnie zdezorientowała, ale kiedy zorientowałem się, co się dzieje, bezwstydnie ją ukradłem, aby poprawić swoją odpowiedź. W ramach rekompensaty i tak głosuję za to.아희 (Aheui) , 914 bajtów
Wypróbuj tutaj! (skopiuj i wklej kod ręcznie)
Aheui może nie jest do gry w golfa, ale mimo to jest fajna. :)
Wyjścia:
N = 10
N = 31
N = 40
źródło
Galaretka , 73 bajty
Pełny program
TryItOnline!
Może być możliwe do golfa to przy pomocy odbiciu
ŒḄ
.W jaki sposób?
źródło
Rubin, 137 bajtów
Punkty twarzy pozostawione na i po 31.
Niegolfowany w programie testowym
źródło
Węgiel drzewny , 71 bajtów
Uwaga : Ten kod nie działa w ostatnim zatwierdzeniu od momentu opublikowania, ponieważ indeksowanie łańcuchów jest zepsute. Powinien jednak działać w tej wersji od 25 października. Działa również z powodzeniem w wersji aktualnie w Try It Online .
Wyjaśnienie
Węgiel drzewny to język zaprojektowany dla sztuki ASCII. Dane wyjściowe są umieszczane na kanwie, która jest drukowana na końcu programu.
Ustawiać
Uzyskaj dane wejściowe i oblicz znaki twarzy:
Narysuj dyni
Po tej pętli mamy
Kolejny:
Wynik:
Narysuj twarz
Narysujemy twarz, patrząc w prawo, i w razie potrzeby zmienimy ją później.
Wynik (do wprowadzenia
31
):Zastanów się, czy to Halloween:
Ostateczne wyjście:
źródło
Pyth - 84 bajtów
Ręczna kompresja bazy.
Pakiet testowy .
źródło
PHP,
178176171 bajtówmożna zapisać 5 bajtów z fizycznymi podziałami linii. Uruchom z
-r
.źródło
V , 97 bajtów
Wypróbuj online!
Jestem rozczarowany, jak długo to się skończyło. Jest bardziej skomplikowany niż zwykle, ponieważ V ledwo radzi sobie z liczbami, wiele bajtów pochodzi z tworzenia hackowanych warunków warunkowych. Zamieściłem szczegółowe wyjaśnienie, ale wymyślenie go zajęło dużo czasu, więc mógłbym zająć się tym później. Oto zrzut heksowy:
Do Twojej wiadomości będzie działać bardzo wolno. Zajmie to około 10 sekund. Wiem, dlaczego tak się dzieje, i szukam rozwiązań.
źródło
Pyth, 76 bajtów
Wypróbuj online.
Nie używa kompresji. (Próbowałem użyć niektórych do wersji ciągu danych twarzy, ale skończyło się na tej samej długości).
źródło
Java 7, 237 bajtów
Kod niepoznany i testowy:
Wypróbuj tutaj.
Wydajność:
źródło
C ++,
222204194 bajtów-18 bajtów dzięki Kevin Cruijssen i -10 bajtów za wyraźną górną część
Nie golfił
źródło
&&
się&
i||
do|
? Podsumowując, czyusing S=std::string;S f(int n){char L[80],o=2*(n>30),i=-1;while(i++<80)L[i]=47<i&i<53?88:i%2?'|':i==20|i==24|i==36?n<32|i>35?94:'o':i-o%14?i-o<55?32:95:10;S t(5,95);return' '+t+'I'+t+' '+S(L+o,L+70+o);}
( 202 bajty ) kompiluje się i uruchamia?i-o
Obowiązkowy jest tylko nawias wokół , więc 204 bajty,PHP, 222 bajtów
Wydajność
źródło
Groovy Script,
273265216202198 bajtówWersja bez golfa
Wypróbuj tutaj
Edytować
Jak wspomniał Tytus, mogę zaoszczędzić trochę rozmiaru
i < 32
zamiasti in 1..31
Edytuj 2
Usunięto wszystkie możliwe przestrzenie wokół operatorów ... Na początku zapomniałem o tym
Edytuj 3
Ponownie przepisano warunki trójskładnikowe, aby użyć zapisanej zmiennej, zastąpiono
;
ją nowymi liniami, usunięto jawną definicję zmiennejEdytuj 4
Jak wspomniał Otávio, mogę zmienić kolejne 4 bajty, jeśli przejdę z
| |${j ? ' |^| | ' : ' | |^| '}| |
na| | |${j ? '^| ' : ' |^'}| | |
źródło
i < 32
zamiasti in 1..31
?;
oba mają długość 1 znaku, sugerowałbym preferowanie nowego wiersza ze względu na czytelność. I zrezygnuj z dobrych nawyków kodowania, pozbądź się ichint
idef
.print
pierwszej trójce zapisz warunek w zmiennej as(j=i>30)
, a następnie w następnych 2 użyj po prostuj
zamiast powtarzać ten sami>30
warunek.JavaScript (ES6),
163125 bajtówTeraz bezwstydnie kradnie sztuczkę @ ETHproduction dotyczącą pozycjonowania twarzy. Kodowanie:
0
to oko1
i2
zęby,3
lewa strona,4
prawa strona i5
grzbiet nosa.źródło
Rubin, 168 bajtów
Prawdopodobnie daleki od optymalnego. Wymaga bibliotek
base64
izlib
.Wywołaj jako funkcję lambda.
źródło
Python 2, 167 bajtów
źródło
C # 6,
223215 bajtówint d=int.Parse(args[0]);var x="| | |\n| |";var s=d<31?" |^| |^| |\n| | | |^"+x+" |VvVvV":(d==31?"^| |^"+x+" |^| "+x+"VvVvV| ":"o| |o"+x+" |^| "+x+"XXXXX| ");Write(" _____I_____\n| | | | "+x+s+"| |\n|_|_|_|_|_|_|");
Cały program bez golfa:
źródło
Func<int, string>
który jest zwykle najkrótszym sposobem.Write
zamiast deklarować i definiowaćs
.\r\n
zamiast tylko\n
?