Mandolina Quine


25

Napisz quine ... z której można usunąć każdą inną postać, nadal będzie to poprawna quine. Możesz określić, czy rozpocząć usuwanie znaków od pierwszego, czy drugiego znaku.

Kryteria punktowania (dodaj premie / odsetki karne razem dla całkowitego procentu):

  • Odpowiedzi muszą mieć co najmniej 4 znaki
  • Program musi zawierać przynajmniej jeden znak alfabetu w swoim źródle, więc na przykład 12345!@#$%^&*()jest zdyskwalifikowany
  • + 750%, jeśli użyty język nie jest kompletny Turinga (patrzę na ciebie, HTML!)
  • -15%, jeśli rozwiązanie nie odczytuje źródła z dowolnego miejsca w jakiejkolwiek formie
  • -20%, jeśli możesz zatrzymać tylko co 5 postać i nadal tworzyć quine

Wynik mierzony jest liczbą znaków w pierwszym programie.

Przykład (nie rzeczywiste programy):

Jeśli 123456789abcdefi 13579bdfoba są quinesami, wynik to 15. Dodatkowo, jeśli 159djest również quine, to końcowy wynik to 12.

To jest golf golfowy, więc wygrywa najniższy wynik.


2
@ hosch250 Oryginalny program nie byłby quine, ponieważ nie drukowałby tych białych znaków. To samo dotyczy niepotrzebnych komentarzy.
Jwosty

1
Tak, nigdy wcześniej nie programowałem quine i nie mam pojęcia, jak to zrobić bez czytania kodu źródłowego w C ++. Jednak widziałem je wcześniej w C ++!
Hosch250,

1
Stwierdzasz: „-20%, jeśli możesz również usunąć co 4 znaki i nadal tworzyć quine”. Ale technicznie nie jest tak w twoim przykładzie. Masz na myśli, że możesz to zrobić drugi raz?
mmumboss,

4
Czy premie są addytywne czy multiplikatywne? Oznacza to, że jeśli mój program ma 10 znaków i kwalifikuje się zarówno do bonusu -15%, jak i do -20%, to jego wynik wyniesie 10 * (1 - 0,15 - 0,2) = 6,5 lub 10 * (1 - 0,15) * (1 - 0,2) = 6,8? Przyjąłem to drugie, ale miłe byłoby wyraźne wyjaśnienie.
Ilmari Karonen

1
Czy to nie byłby mandolina, a nie gilotyna? Gilotyny sprawiają, że jeden jest czysty, na ogół śmiertelny, cięty, a głowa toczy się. Mandoliny powstają z wielu równomiernie rozmieszczonych plasterków. :)
Jonathan Van Matre

Odpowiedzi:


24

PHP, 4 znaki - 15% - 20% = 2,72 2,6 punktu

ABCD

Tak, PHP jest kompletnym językiem Turinga. Nikt nie powiedział, że muszę korzystać z jego faktycznych funkcji programistycznych. ;-)

Edycja: Zmieniono wynik na podstawie wyjaśnienia, że ​​premie są addytywne, a nie mnożące.


Prawdopodobnie działa to w ASP.
Ismael Miguel

2
@ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨d̷̰̀ĥ̷̳ Poddaję się. : P
Jwosty

17
W rzeczywistości odradza się korzystanie z rzeczywistych funkcji programowania PHP.
Rhymoid

1
To nie jest właściwy quine. Jednak wciąż dobra odpowiedź
MilkyWay90

14

TI BASIC 4 - 35% = 2,6

Mogę je źle zrozumieć, ale myślę, że kwalifikuję się również do premii -15% i -20%, co oznacza, że ​​mam najniższy możliwy wynik.

Mogę napisać program:

123i

który wyświetli, 123igdzie i jest oczywiście jednostką urojoną. Po usunięciu pierwszego i trzeciego znaku pozostaje tylko to, 2iktóre wyjście2i


Niezupełnie ... „12i” wyświetli „12i”, a „2” wyda „2” przy minimalnym wyniku 1,95.
intx13,

W rzeczywistości „2i” osiąga 1,3, a jeśli pusty program jest uważany za quine, „i” osiąga 0,65.
intx13,

4
@ intx13: „ Odpowiedzi muszą mieć co najmniej 4 znaki.
Ilmari Karonen

Ach, tęskniłem za tym!
intx13

Pobij mnie;)
Timtech

13

Python - 95

Wielkie wyzwanie. Myślałem, że to całkiem sprytne i właściwie legalne rozwiązanie!

00;"#";print(open(__file__).read())
0#;XpXrXiXnXtX(XoXpXeXnX(X_X_XfXiXlXeX_X_X)X.XrXeXaXdX(X)X)

1
Miły! Zauważ, że to technicznie nie działa tak, jak jest, ponieważ kończysz usuwanie nowego wiersza podczas tworzenia alternatywnego quine. wymaga odrobiny ulepszenia IOW
Claudiu

3
@Claudiu Cóż, myślę, że to zależy od tego, czy OP uważa znak nowej linii za znak. Jeśli tak, możesz po prostu dodać nową linię między każdą linią. 96 znaków
qwr

Oczywiście nowa linia to znak ...
mbomb007,

11

Golfscript, 5 punktów

{hai}

jest funkcją, która po uruchomieniu uruchomi (nieistniejącą) funkcję hai. Nie jest on jednak wykonywany, ale drukowany po zakończeniu programu - łącznie z zewnętrznymi nawiasami. Usunięcie siebie nawzajem daje:

{a}

Kulawy, wiem :-)


Uważam, że kwalifikujesz się również do obu bonusów: twój program nie odczytuje własnego kodu źródłowego, a także {}jest quine.
Ilmari Karonen

@IlmariKaronen trudno powiedzieć, co liczy się jako czytanie własnego kodu źródłowego. Czy liczy się nieoceniona funkcja? Czy liczy się łańcuch znaków? Co do drugiej premii - być może jest to po prostu źle sformułowane, ale przeczytałem „usuń co cztery znaki” jako „zachowaj co piąty znak”, co dałoby mi tylko jedną nawias (choć {ab0}kwalifikuje się, jeśli to 0może być ten, który jest zachowany)
John Dvorak

Jest to rzeczywiście źle sformułowane, ale przykład sugeruje, że oznacza „zachowaj co czwarty znak”. W każdym razie, jak zauważysz, {ab0}kwalifikuje się w obu kierunkach.
Ilmari Karonen

Wydaje się {hi}również, że działa, będzie krótszy (4 znaki), a także zakwalifikuje się do wszystkich bonusów. (Wygląda na to, że skrypt {iocenia z {ijakiegoś powodu ...)
Claudiu


8

HQ9 + - 4 * 7,5 * 0,8 = 24 punkty

Q+++

Nadal quine z każdą drugą postacią:

Q+

... i co piąty:

Q

Przepraszam, nie mogłem się oprzeć. :)


7

HTML / Markdown, 4 * 7,5 = 30

HHHH

Przyznaję, że to kiepskie, ale tak naprawdę nie jest to sprzeczne z żadną regułą w pytaniu. Tyle że HTML / Markdown nie może być uważany za prawdziwy język programowania.


Przypuszczam, że nie określiłem, że programy, których nie można podzielić na mniejsze, są nieprawidłowe. Zmiana wyzwania ...
Jwosty

@Jwosty: wtedy wygra „HHHH” w HTML. Notatka 5555nie działa, ponieważ nie ma znaków alfabetycznych
Claudiu

Potrzebujesz znaku alfabetu.
qwr

@qwr: Zapomniałem o tym, patrząc na GolfScript. Oddalony.
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨d̷̰̀ĥ̷̳

Hmm ... Przypuszczam, że to ważne: P
Jwosty

5

! / bin / sh

Bardzo podobało mi się rozwiązanie qwr , bezwstydnie stworzyłem port dla powłoki POSIX. Proszę nie zapisywać go w nazwie pliku zawierającej spacje.

: '#';cat $0

#c a t   $ 0

Zacznij usuwać od znaku 1 i licz znaki nowej linii jako znaki. Drugi quine to oczywiście:

 #;a 0
cat $0

Proszę głosować za odpowiedzią qwr zamiast tej!


3

Bash, 23

Newline jest postacią!

Niektóre niechlujne komentarze działają, więc gdy każdy inny znak zaczynający się od pierwszego jest usuwany, komentarz staje się kodem, a kod staje się komentarzem:

#cRaRtR R$R0R R#
cat $0

Po usunięciu każdego innego znaku (w tym nowej linii ):

cat $0 #ct$

nie jest to jednak quine, jeśli czyta własne źródło.
daniero

@daniero „-15%, jeśli roztwór nie czyta swoje źródło z dowolnego miejsca w jakiejkolwiek formie” oznacza, że dopuszczone do odczytu źródła programu (ale nie dostać bonus)

@daniero oh obejrzałem wikipedię. Przypuszczam, że to oszustwo ... ale to jest golfowy kod

Zawsze głosuję koty!
Antonio Ragagnin

2

Brainf ** k, 37-15% = 31,45

Nadużywanie przenośnego tłumacza Brainfuck

+A[B-C<D+E]F-GÿH<I<J<K<L<M<N<O[P.Q>R]

Zacznij usuwać z drugiego znaku.


Kiedy uruchamiam to, dostaję B-C<D+E]F-GÿH<I<J<K<L<M<N<O[P.Q>R]jako wyjście, więc brakuje niektórych znaków.
Sylwester,

Czy to Brainfuck, czy jakiś dialekt Brainfuck, który działa tylko na jednym tłumaczu?
user253751

@immibis Jest regularny (te wielkie litery mogą być spacjami, symbolami lub czymkolwiek). Musisz jednak użyć przenośnego tłumacza powiązanego z odpowiedzią.
Timtech

1
Pierwsza część idzie w lewo, aż znajdzie ÿ, a połączony interpreter przechowuje kod 5000 bajtów przed rozpoczęciem taśmy danych. To trudno przenośne Brainfuck.
user253751

0

HQ9 + T, - 4 * 0,8 = 3,2 punktu

qqqq

Jest to poprawny quine (ish) i quine co drugi i piąty znak. Nie mogłem się oprzeć. . . .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.