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 są 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.