Wszyscy wiemy, co to jest quine . Odwrócony Quine jest niepusty program, który drukuje odwrotnością jego kodu źródłowego bez czytania jego kod źródłowy i składa się wyłącznie ze znaków ASCII druku (poprzez przestrzeń ~
).
W tym przypadku „odwrotność kodu źródłowego” oznacza, co następuje: wynik programu musi zawierać każdy drukowalny znak ASCII (m - c) razy, gdzie c jest liczbą wystąpień tego znaku w kodzie, a m jest maksymalnym liczba powtórzeń dowolnego znaku w kodzie.
(Innymi słowy: twój kod + twój wynik = permutacja m razy wszystkich drukowalnych ASCII.)
Na przykład, jeśli twój program to 12345
, to m = 1 i powinieneś wypisać dowolną permutację tego ciągu:
!"#$%&'()*+,-./06789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Jeśli twój program to AAB
, to m = 2 i powinieneś wypisać dowolną permutację:
!!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@BCCDDEEFFGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~
Zwróć uwagę, że brakuje dwóch A
s, a jednego brakuje B
.
Chociaż program, który zawiera wszystkie drukowalne znaki ASCII i niczego nie wypisuje, jest prawidłową odwrotną quine (spełniającą m = 1 ), taka odpowiedź nie byłaby zbyt konkurencyjna, biorąc pod uwagę jej długość.
Masz napisać program, który jest odwrócony quine, jak opisano w powyższym akapicie. Ponieważ jest to kod-golf , wygra najkrótszy program w bajtach. Powodzenia!
duplicated for every repeated character in the source code
to robi różnicę w wyzwaniu11234512345
?duplicated for every repeated character in the source code
oznacza lub czy przesłanie jest ważne dla tego kryterium, ponieważ PO nie rozwiązał dość kilka pytań tutaj.Odpowiedzi:
Brain-Flak ,
221207 bajtówObejmuje +1 dla
-A
Wypróbuj online!
źródło
[
pięć razy, a nie za każdym razem. Uwaga:2
w tym przykładzie jest usuwany tylko raz. Wyzwanie jest jednak nieco mylące.+1
:)!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
abcdefghijklmnopqrstuvwxyz {|} ~ ` uzyskałby lepszy wynik: /CJam , 17 bajtów
Wypróbuj online!
Wydruki
Wyjaśnienie
Celem była modyfikacja standardowego quine
tak, że żaden znak nie jest powtarzany w programie. Powodem tego jest to, że CJam ma ustawiony inny operator, którego możemy użyć do usunięcia znaków z drukowalnego zakresu ASCII, ale nie bierze pod uwagę liczby wystąpień. Ręczne wdrożenie tego byłoby prawdopodobnie dłuższe, więc musiałem się upewnić, że każda postać pojawi się tylko raz i nie będziemy musieli martwić się o zdarzenia.
źródło
Python 3 , 83 bajty
Wypróbuj online!
Wydruki
-0.375 False
.źródło
05AB1E ,
956160 bajtów (nie 58 b / c Nie lubię tego)Wypróbuj online!
Stara odpowiedź unieważniona przez „tylko znaki ASCII”, wiele poleceń tutaj nie jest poprawnych.
Drukuje się
abcdefghijklmnopqrstuvwxyz012345678
jeden raz, ponieważ nie ma zduplikowanych znaków.Wersja z
BCDEFGHIKMNOPQRSTUVWXYZ
usuniętymi:Praca w toku ... Myślę, że ~ 60 bajtów jest tak niskie, jak to możliwe bez znaków spoza ASCII w 05AB1E ..
05AB1E , 58 bajtów
Wypróbuj online!
Drukuje wynik x12 z powodu powtarzających się znaków:
Również nie kończy się całkiem poprawnie, pracując nad tym teraz ...
Nieprawidłowe stare odpowiedzi (z powodu znaków spoza ASCII) zostały usunięte, zobacz historię edycji.
źródło
Java 8,
10699190 bajtówźródło
i {
class i{/*!"#$%&'()+,-.0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`bdefghjkmnopqrtuvwxyz|~*/}
wystarczy? Zawiera cały kod ASCII do wydruku w kodzie źródłowym i nic nie wyświetla. Część „ duplikowane dla każdego powtarzanego znaku w kodzie źródłowym ” odnosi się do wyjścia, więc chociażs
jest powielany wclass
i*
a/
są duplikowane powodu/* */
, wyprowadzanie czterokrotnie nic nie jest jeszcze nic.interface Z{}//!"#$%&'()*+,-.0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY[\]^_`bdghjklmopqsuvwxyz|~
JavaScript (ES6),
103101 bajtówStare rozwiązanie (przy użyciu 103 bajtów
alert
)Stare (nieprawidłowe) rozwiązanie (96 bajtów)
źródło
//
, co oznacza, że musisz wydrukować znaki do wydrukowania, z jednym/
usuniętym. (Myślę)