Quat to połączenie quine i popularnego programu dla kotów esolang .
Wyzwanie
Wyzwanie polega na napisaniu standardowego programu dla kotów. Cokolwiek użytkownik wprowadzi, program wyśle echo wejścia na standardowe wyjście.
Jednak gdy długość wejścia jest większa niż 0 i wielokrotność 4, program powinien wypisać własny kod źródłowy. Quat pochodzi z portugalskiego quatro , co przekłada się na „cztery”.
Zasady
- Standardowe luki zastosowanie
- Nie możesz odczytać kodu źródłowego z pliku
- Puste wejście powinno dawać puste wyjście
Premia
Jeśli twoja długość wejściowa jest wielokrotnością 4, możesz zarobić 25% bonusu drukując length/4
czasy quine . Kolejny 5% bonus, jeśli oddzielisz wynik od spacji (niedozwolone jest końcowe miejsce).
Przypadki testowe
Dla programu obowiązują następujące przypadki testowe in%4=0?cat:self
(nie jest to prawdziwy język).
<empty input> -> <empty output>
input -> input
1234 -> in%4=0?cat:self
12345678 -> in%4=0?cat:self
0% bonus
12345678 -> in%4=0?cat:selfin%4=0?cat:self
25% bonus
12345678 -> in%4=0?cat:self in%4=0?cat:self
30% bonus
Punktacja
To jest golf golfowy . Najkrótszy kod w bajtach wygrywa.
\n
będzie nowym znakiem wiersza, na 1 bajt wejściaOdpowiedzi:
CJam, 23 * 0,75 = 17,25 bajtów
Standardowy uogólniony quine ...
lub
Sprawdź to tutaj.
Wyjaśnienie
Druga wersja unika używania zmiennej, stosując sztuczkę obracania stosu
]:\
.źródło
Poważnie,
89 bajtówWypróbuj online
(Naciśnij raz w polu wprowadzania, aby przetestować puste dane wejściowe.)
Pierwszego bonusu można dokonać w 12 bajtach (16 * .75):
Wyjaśnienie:
Ponieważ niektórym ludziom nie podoba się korzystanie z wbudowanego quiningu Seriously, udostępniam 22-bajtową wersję, która nie jest używana
Q
jako odniesienie:Jeśli jesteś jedną z tych osób, rozważ tę ostateczną wersję (na razie), a następnie rozpocznij meta wątek na temat korzystania z wbudowanych w quines.
źródło
Pyth, 33 * .75 = 24,75
Pakiet testowy
Standardowa Quine Pyth za pomocą łączyć. To tylko prawdziwa quine na tłumaczu online, który nie dodaje końcowej nowej linii.
Otrzymanie końcowej premii powoduje wynik 39 * .7 = 27,3:
źródło
Vitsy ,
1817 bajtówTak blisko .Yus. Teraz wygrywam wśród niewbudowanych quinerów! patrzy na PoważnieNie ma powodu, abym sięgał po bonusy - rzuciły o wiele więcej bajtów.
Oszustwo wersja quine, 12 bajtów:
źródło
G`
jest super! Wydaje się bardziej uzasadnione niż prosteQ
polecenie.Emacs Lisp (323 * 0,75 = 242,25)
Wykorzystuje to mechanikę cytowania Lispa do podania kodu źródłowego jako danych wejściowych.
Stara wersja oszukiwania
Nie golfowany:
źródło
JavaScript,
575672 bajtów * 0,75 = 54Dzięki @Neil za jednobajtowe oszczędności!
Najkrótsze rozwiązanie, jakie udało mi się znaleźć, było dość proste.
Oto kilka dodatkowych (ciekawszych) rozwiązań:
JavaScript,
8281 bajtów * 0,75 = 60,75Ten nadużywa
repeat
funkcjonalność zgłaszania wyjątku, jeśli zostanie przekazana liczba całkowita.JavaScript, 83 bajty * 0,70 = 58,1
Ten ostatni jest zdecydowanie moim ulubionym, dzieląc dane wejściowe na każde cztery znaki za pomocą wyrażenia regularnego
/.{4}/
. Jeśli na końcu łańcucha pozostały jakieś znaki, gdy mypop
, nie można go podzielić przez 4, więc zaalarmuj dane wejściowe. W przeciwnym raziepop
zmniejszyliśmy długość tablicy o jeden, więc w tym momencie długość tablicy jest równa długości wejściowej / 4. W tym przypadku po prostufill
z quine ijoin
spacjami.źródło
&&
się||
, położyć!
przed(p=prompt())
, usunąć<1
i przenieśćp
się na wewnętrznej stronie z?:
.Perl,
6865 * 0,75 = 48,75 bajtówZobacz pakiet testów online tutaj.
Zepsuty
źródło
Mathematica, 229 bajtów
Cała biała spacja jest
InputForm
zgodna z faktycznym kodem programu.źródło
JavaScript ES6, 45 bajtów
Rozszerzenie mojej 21-bajtowej wersji Bling Quine. Mam nadzieję, że miksowanie
prompt
i generowanie funkcji jest dozwolone.źródło
JavaScript, 33 bajty
Inne rozwiązania:
4436 bajtów38,5 bajtów
źródło