Quine Anagrams! (Wątek gliniarzy)


22

To jest wątek gliniarzy. Aby zobaczyć wątek złodziei, kliknij tutaj .

Zadanie gliniarzy

  • Najpierw napisz quinę w wybranym przez siebie języku.
  • Następnie wdrap się na quine. Upewnij się, że robisz to dobrze, ponieważ rabusie będą próbowali go rozszyfrować i znaleźć oryginalny kod źródłowy! Pamiętaj, że kodowany kod nie musi działać.
  • Opublikuj odpowiedź w tym wątku. Dołącz język, liczbę bajtów i kodowany kod.

Twój program może nie drukować do STDERR.

Oto przykład złożenia policjanta:

Python, 29 bajtów

nt _%=_r;_riinp;pr_='t _%%%_'

Zadanie rabusiów

Aby zobaczyć wątek złodziei, kliknij tutaj .

Bezpieczne zgłoszenia

Jeśli zgłoszenie nie zostało jeszcze złamane po tygodniu od opublikowania, możesz dodać rozwiązanie i określić, że jest bezpieczne. Jeśli tego nie zrobisz, Twoje zgłoszenie może być nadal łamane.

Punktacja

To jest , więc użytkownik z bezpiecznym przesyłaniem z najmniejszą liczbą bajtów zostanie zwycięzcą tej sekcji.

Tabela liderów

Oto fragment stosu do wygenerowania tablicy wyników dla tego wyzwania. Aby wyświetlać się poprawnie, sformatuj swoje zgłoszenie w następujący sposób:

# Language Name, N bytes

... other stuff ...

Jeśli zgłoszenie zostanie złamane, sformatuj go w następujący sposób:

# Language Name, N bytes, [Cracked!](link)

... other stuff ...

Jeśli przesłanie jest bezpieczne, sformatuj go w następujący sposób:

# Language Name, N bytes, Safe!

... other stuff ...

<script>site = 'meta.codegolf'; postID = 5686; isAnswer = false; QUESTION_ID = 99469;</script><script src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'></script><script>jQuery(function(){var u='https://api.stackexchange.com/2.2/';if(isAnswer)u+='answers/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJeRCD';else u+='questions/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJO6t)';jQuery.get(u,function(b){function d(s){return jQuery('<textarea>').html(s).text()};function r(l){return new RegExp('<pre class="snippet-code-'+l+'\\b[^>]*><code>([\\s\\S]*?)</code></pre>')};b=b.items[0].body;var j=r('js').exec(b),c=r('css').exec(b),h=r('html').exec(b);if(c!==null)jQuery('head').append(jQuery('<style>').text(d(c[1])));if (h!==null)jQuery('body').append(d(h[1]));if(j!==null)jQuery('body').append(jQuery('<script>').text(d(j[1])))})})</script>


7
Blisko związane. (To samo wyzwanie, z tym wyjątkiem, że odpowiedzi nie musiały być quinesami.)
Martin Ender,

1
Czy kodowany kod ma być również quine? Czy to w ogóle musi być prawidłowym programem? Próbowałem uruchomić przykładowy Python na codepad, ale pojawia się błąd składniowy.
mleko

@ mleko Nie, to nie musi być prawidłowy program.
Oliver Ni

Odpowiedzi:


15

C #, 288 bajtów

Stag is a great shoW.        "="=""="="Agent"plastic"Was"tryin"to"Release"an"Astroid"."$Money$"st@le"tigers"and"Agent"plastic"got"mad"."$Money$"sic","man","t0tally"rad"."Sistrs"Rms"titAnic";"Civic"Ace"in"{sC@m}{hic}{vicis}..{cats}sAc}((@))((@)){{{>>{{{{{{}}}}}}}}}\\\\\\\;;;(@)((@)()),,;;

Moja strategia polega na tym, aby wszystkie krótkie zostały złamane i nikt nie przejmuje się tym, biorąc pod uwagę, jak długo to trwa ... Przypuszczam, że powinienem zauważyć, że jest to pełny program, a nie tylko funkcja.


10

JavaScript, 1574 bajtów, Bezpiecznie!

Spędziłem na tym zdecydowanie za dużo czasu. Zobacz zaciemnienie.

(notice that an unmatch parenthesis remains throughout the entire text.

dear "sir",

|    i cannot express my loathing to you and your things. they truly are a loathsome sight. (regar'less of their quality, they function as the most appalling devices...)[1]

|    these avocads of thine possession are most unpleasent. (ce n'est pas faux.) Queer; Careful; An' in total repulsing. in this form, those are not seulement cringe... So; CAB's is quite Cruel. (Cruel indeed...)

|    intention is not great (heh, intention, ;}) run, no, run, since {tu est le ;AqC;};

{{{{============================================}}}}

[1]: see? am i not insane? You may dictate the opposite, so i dictate thus.

9 + 4 is 13. Y is this. Y + 4 is 9 + 9 minus one. N is this. f(x) is {x + x}, so f(N) is N plus N is N + N is 3.

:^) i'm cruel; not so cruel.)
                                  rrrrrrrrrr 0nnnccnnggrrrrttssBBC
{({[}(<[<))(((((){{})}[}][[]{}(]))))|} f f r 0nnnccnngrrrrrttesBBA
())(((()))))()))()()()((((()))}{{})((} f f r 0nnnccnngrrrrrttesBBY
]]}(([][]{{{}}})()({}(){}{()}{}()[])][ f f r 4nnnccnngrrrrrttesBSY
))({})(}{)({{{{(()))())))))))()))()()( f f r 4nnnccnngrrrrrtpesqSY
)()()((((((((((Z))))))))()(()((()((((( f f r 5nnnccnngrrrrrtlefoSY
(((;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;''' f f r 3nnncccngrrrrxtleifSY
''''''''''''''''''',,,,,,,,[[[[[[]]]]] f f r 3nnncccngrrrrxtleifZQ
[ ] ] + + + + + + + + + + + + + + + ++ f f r 9nnncccggrrrrxtleifZQ
+ + + + too not fun...fffffffffffffuuu f f r 5nnncccggrrrrxtlli0ZQ
uuuuuuuuuuuu.. | | | |99S            ) f f r 0nnncccggrrrrxxll01QQ

Oto oryginalne źródło!

function Y(x){return x.charCodeAt()};
function Q(x){return String.fromCharCode(x)};
N=Array.prototype;
function B(f,g,h){return function(){
  return f(g.apply(h||this,arguments));
}};
function S(f,h){return function(){
  return f.apply(h||this,N.reverse.call(arguments))}}
function id(x){return x};
function format(){
  args = N.slice.call(arguments);
  str = args.shift(); res = []+[];
  for(i = 0; i < str.length; i++){
    c = function(){return str[i]};
    if(B(Y,c) == 95){
      res += args.shift();
    } else if(S(B)(c,Y)() == 94){
      res += q = B(id,Q)(34);
      res += args.shift();
      res += q;
    } else if(Y(c()) == 39){
      i++;
      res += c() == ([][0]+[])[1] ? Q(10) : []+[];
    } else res += c();
  }
  return res;
}
console.log(format(Z="function Y(x){return x.charCodeAt()};'nfunction Q(x){return String.fromCharCode(x)};'nN=Array.prototype;'nfunction B(f,g,h){return function(){'n  return f(g.apply(h||this,arguments));'n}};'nfunction S(f,h){return function(){'n  return f.apply(h||this,N.reverse.call(arguments))}}'nfunction id(x){return x};'nfunction format(){'n  args = N.slice.call(arguments);'n  str = args.shift(); res = []+[];'n  for(i = 0; i < str.length; i++){'n    c = function(){return str[i]};'n    if(B(Y,c) == 95){'n      res += args.shift();'n    } else if(S(B)(c,Y)() == 94){'n      res += q = B(id,Q)(34);'n      res += args.shift();'n      res += q;'n    } else if(Y(c()) == 39){'n      i++;'n      res += c() == ([][0]+[])[1] ? Q(10) : []+[];'n    } else res += c();'n  }'n  return res;'n}'nconsole.log(format(Z=^,Z))",Z))


avocadspsuje mnie!
Kritixi Lithos


5

Niedociążenie , 20 bajtów, pęknięty!

~*)(a):*(*a:S(*S*~S)

Wymieszałem to przez losowe uporządkowanie postaci, ponieważ co może być bardziej zakodowane niż losowe?

Prawidłowo napisany interpreter niedociążenia ulega awarii, gdy widzi nowy wiersz na najwyższym poziomie programu. Jak zwykle w zawodach golfowych, pod koniec programu nie ma nowej linii; Po prostu umieszczam to przypomnienie tutaj, ponieważ bardzo łatwo jest dodać je przez pomyłkę podczas kopiowania programu do tłumacza.


Witamy w PPCG! :)
Martin Ender

2
Cóż, od jakiegoś czasu komentuję pośrednio PPCG, śledząc użytkowników PPCG na innych forach (Reddit, IRC itp.) I krzycząc na nich, dopóki nie opublikują tego, co chcę.

Pęknięty. Dzięki, to było fajne wyzwanie. :)
Martin Ender

5

Siatkówka , 20 bajtów, pęknięty

S`(\?)\1*

S`(\?)\1*

Program (i wyjście) zawiera dokładnie dwa kanały.

Możesz spróbować Retina online tutaj.

Mała wskazówka:

Podczas projektowania tego gliniarza znalazłem nową, najkrótszą quinę Retina, którą opublikuję w naszym quine quizie, gdy ta odpowiedź będzie pęknięta lub bezpieczna.


Domyślam się, że jest tam suchobieg *i \jako opcja konfiguracji, aby zapobiec dodatkowemu podawaniu linii.
mbomb007

5

CJam, 39 bajtów, Bezpieczny

!""$)+023345679:AEORYZZ\_```bbceeffimmz

Rozwiązanie:

")A!0z`eZOmRZ$Yei`E"_`\32fm95b67b43f+:c

Używa podstawowego kodowania do zaciemniania. Ponieważ jednak wszystkie postacie znajdują się w ASCII, pomyślałbym, że ktoś może wymyślić, 32fm95b??b??f+:cco wystarczy, by brutalnie zmusić resztę.


Gdybym odpowiedział, nie wiedziałem, jak wybrać permutację. Sortowanie to dobry pomysł
Luis Mendo

4

Pyth, 38 bajtów, Bezpieczny

Nie dość golfa, ale działa.

````::""@@@@++++22ggKKKKKKKKNNNNZZZZ

Wersja nieposortowana:

K"K++@KZ:`K@`NZNgK2"++@KZ:`K@`NZNgK2

1
Mam quine, ale brakuje jej dwóch @i jednego 2... Jest tak blisko!
Steven H.,

Szybko! Nie masz dużo czasu!
FliiFe,

Myślę, że to koniec. Nie mogę tego rozgryźć ... :( Gratulacje dla bezpiecznego rozwiązania!
Steven H.,

Masz rozwiązanie! Z ciekawości, co znalazłeś?
FliiFe,

Miałem K"K2:K@Kg`Z`Z++NKN":K@Kg`Z`Z++NKN.
Steven H.,



3

JavaScript, 147 bajtów, Pęknięty przez ETHProductions

Będę pod wielkim wrażeniem, jeśli komuś uda się to złamać ...

   """"''''((((()))))+++++++++.//99;;;;;;=========>>[[[[[]]]]]``````````````cccdddddddeeeeeeeeeeeffiiiiiiinnnnnnnoooooooorrrrrrrrsttttuuwwwwwwx{{}}

Zamierzone rozwiązanie:

e=o=>{n=o;``[r=`constructor`][r](`return e=>{`+o+`}`)````};d=e+"";e`for(i in window)if(/ert/.exec(i))w=window[i];w('e='+d+';d=e+"";e'+d[9]+n+d[9])`

@ETHproductions Tak, nie ma lna alertlub console.log, nie mza confirmalbo prompt... Tak, jestem zła>: D powinienem przyznać nagród do orzechów?
jrich

Cóż, jest to funkcja, która zwraca zamiast alarmowania (a jestem dość pewny wersja PO pracował tak, aby) i mogłem zrobić to samo do rozwiązania ... ale czy to jest legalne?
ETHprodukcje

@ETHproductions, które całkowicie by to zepsuły :( Powiem nie, ale jeśli popularna opinia mówi inaczej, to chyba łamie większość wyzwań JS
jrich

Tak, nie lubię zwrotów, ale jestem w 99% pewien, że nie ma innego sposobu na złamanie tego konkretnego rozwiązania. Postaram się uzyskać poprawny pęknięcia na twoje though :)
ETHproductions

@ETHproductions Być może sprawiłem, że było to zbyt trudne z perspektywy czasu, ale powodzenia!
jrich

3

Haskell, 86 bajtów, złamany przez nich

putStr$"Study:ric====>>>>yummy:candy:circus:party:in:syrirrr!!!!!!$[;['=['[$]']='];]$"

To prawidłowe wyrażenie Haskell, które wyświetla:

Study:ric====>>>>yummy:candy:circus:party:in:syrirrr!!!!!!$[;['=['[$]']='];]$

Więc jeśli Ric się uczył, może pójść na pyszne cyrkowe przyjęcie! To znaczy, jeśli dowie się, gdzie jest Syrirrr .



3

V , 20 bajtów - bezpieczny!

„033lpqxx | áäéééñññ

Zwróć uwagę na końcowy znak nowej linii.

Nie byłem do końca pewien, jak je szyfrować, więc posortowałem znaki według wartości ASCII.

W przeciwieństwie do większości odpowiedzi V, ta zawiera zero znaków niedrukowalnych. Oto zrzut heksowy:

0000000: 2224 3033 336c 7071 7878 7ce1 e4e9 e9e9  "$033lpqxx|.....
0000010: f1f1 f10a                                ....

Kod nieszyfrowany:

éññ3äl0éé $ áx3 | "qpñx

Wypróbuj online!

Strona nie dotyczy tego linku. W poprzednich wersjach V nowa linia była zawsze drukowana automatycznie, dlatego ta wersja ma końcową linię. Tłumacz w czasie, gdy to pisałem, był poprawnym quine, chociaż teraz możesz po prostu usunąć nowy wiersz, aby był poprawny.

Wyjaśnienie:

éñ                      " Insert a 'ñ' character
  ñ              ñ      " Put all of the following into register 'q' and run it when it's done recording
   3äl                  " Make 3 copies of the character under the cursor
      0                 " Move to the first column
       éé               " Insert an 'é' character
         $              " Move to the last column
          áx            " Append an 'x'
            3|          " Move to the third column
              "qp       " Paste register 'q' (all of the commands we just ran)
                  x     " Delete a character

3

Haskell, 99 bajtów, sejf

"super.quine?"=>#$$$%%%%%&&(())))**++++,,,,/;<<==>>STaabbdeffggghhhjlmmnoppqqrrsssttttuuuvvwwwwxxxx

Kolejny quin Haskell, tym razem z ładnym dziwnym 99 bajtami.

g% w = (g <$> w) ++ w ++ pure (g.last $ w); main = putStr $ pred% "h & x>) h =%? x * ,, x ,, qvsf) h / mbtu% x * qvuTus% qsfe & # "
Wypróbuj na Ideone. Spacje w „g <$> w” muszą zostać usunięte, umieszczam je tam, ponieważ w przeciwnym razie znikną <, $ i> (najprawdopodobniej interpretowane jako znacznik html). Bzdurny ciąg jest ciągiem programu z każdym znakiem odwzorowanym na jego następcę, w tym końcowym "(który można dołączyć do ciągu bez ucieczki, ponieważ jest odwzorowany #). Funkcja pomocnicza %pobiera ciąg i mapuje każdy znak do swojego poprzednika za pomocą pred(ustępowanie code"), a następnie dołącza oryginalny ciąg znaków (ustępowanie code"gibberish_code) i ostatni znak dekodowanego ciągu znaków (ustępowanie code"gibberish_code"). Aby przekonwertować znak cna ciąg znaków, zwykle wystarczy umieścić go na liście, [c]ponieważ ciągi znaków w Haskell są po prostu listami znaków, jednak następca[jest \, który wymagałby ucieczki w łańcuchu kodowanym przez następcę, więc zamiast tegopure jest używany, który przenosi dowolne typy do Monady (z której Monada wynika, wynika z kontekstu).


Prawie na miejscu. Mam dodatkowy spacei !, ale nie wiem, jak się go pozbyć. Fajny pomysł, mieć +1.
nimi

@nimi Tahnks, jestem ciekaw, co twoje podejście zrobiło inaczej.
Laikoni

Miałem g%w=g w++w++pure(last.g$w);main=putStr$(pred<$>)%"...#". Zasadniczo nie udało mi się przenieść funkcji <$>do tej funkcji %. Teraz, gdy widzę twoje rozwiązanie, jest oczywiste.
nimi


1

JavaScript ES6, 49 bajtów (pęknięty)

{{$((((((('`fuck rent =+> turn off fin`')))))))}}

Czy to źle, gdybym bardziej skoncentrował się na tworzeniu spójnych słów w zaszyfrowanym rozwiązaniu?

W każdym razie jest to moje pierwsze wyzwanie dla gliniarzy i rabusiów.

Aktualizacja : zobacz komentarze dotyczące pękniętego kodu.



1

FurryScript, 199 bajtów, Bezpiecznie!

UT  TTEDU DT   T U T D   ES DGT GEL L   GL
-<<<<<<+++++++[[[[#BESTQUINEEVER!#BESTQUINEEVER!#BESTQUINEEVER!#BESTQUINEEVER!#BESTQUINEEVER!#]]]]+++++++>>>>>>-

X   XG WPW   SS  X  PW S US WWTLWP  XS  PE

Powinny być dość łatwe do złamania.

Kod nieszyfrowany

BESTQUINE[ DUP LT +SW +GT +< BESTQUINE#> ]
EVER![ DUP EX+ SW EX- LT +SW +GT +< EVER!#> ]
<BESTQUINE[ DUP LT +SW +GT +< BESTQUINE#> ]> BESTQUINE#
<EVER![ DUP EX+ SW EX- LT +SW +GT +< EVER!#> ]> EVER!#

Tylko zwykły quine, ale z dwoma podprogramami i dodatkowym kodem do zamiany napisów.


1

Vim, 17 bajtów

<CR>""&(())::::\npps

The <CR>To wprowadzić ( ^Mlub ^J) na wejściu i dodano nową linią na wyjściu. To nie jest niejawny koniec nowego wiersza pliku (patrz :help 'eol'). 17 bajtów jest dodawanych do pustego bufora. (Nowe linie w edytorze tekstu są dziwne; daj mi znać, jeśli nie jest to jasne).




0

Python 2, 105 bajtów, Cracked!

    ######%%%%''(((((((())))))))****--0011::::;;==@@@@@@@@@@[[[[]]]]aaaaaaggggggiiiiiiiinnpprrrrrrrrrtt~~

Drugi został pęknięty, więc ten jest trudniejszy.

drukuj „Aby znaleźć rozwiązanie, zabierz się do pracy!”



@ Sp3000 O rany, tak, ale właściwie miałem oryginalny quine robiąc coś więcej. W każdym razie zrobiłeś to leniwie: P
Erik the Outgolfer


0

QB64 , 89 bajtów

(_+cad:effecs:fact), =+cred:scarf:attaccd?, =+eff4c3d:cars:craccd?, (_+csc:f4c3d:fact), "

Niektóre istotne punkty:

  • Kod nie będzie działał w QBasic: używa funkcji specyficznych dla QB64
  • Rozszerzenie składni jest wyłączone
  • Brak znaków dolara i tylko jeden znak cudzysłowu
  • „Poezja” byłaby odcinkiem, ale rymuje się


0

OLEJ , 77 bajtów, bezpieczny

0
0
1
1
1
1
1
1
1
1
1
2
2
4
4
4
6
8
10
11
11
11
12
17
18
18
18
18
22
26
26
32

Powodzenia z tym.

Rozwiązanie „skomentowane” (usuń komentarze przed uruchomieniem, inaczej nie będzie działać):

0 # nop twice
0
1 # copy element from cell 1 to 1 (so do nothing again)
1
1
4 # print what's in cell 1 (a zero)
1
11 # print a newline
4 # and the same thing again; printing zero and a newline
1
11
1 # copy what's in cell 2 (a 1) into cell 2
2
2
1 # copy what's in cell 12 (two lines before; a 2) into cell 18
12
18
10 # check if the value in the cell of the following line (starting with 2; we'll jump back here)
18 # (this is cell 18)
1 # is equal-ish to the one in cell 1 (a zero)
32 # if yes, jump somewhere
22 # otherwise jump one cell ahead
1 # copy what's currently in cell 18 (first a 2) into cell 26
18
26
4 # print cell 26
26
8 # increment cell 18
18
11 # print a newline
6 # and jump back to cell 17
17

Podsumowując, działa najpierw drukując dwa zera, a następnie porównując każdą linię, zaczynając od trzeciej zera, a jeśli nie jest zerem, drukując ją, w innym przypadku wychodząc (ponieważ OIL odczytuje zero z dowolnego pustego / nieistniejącego komórka). Wszelkie zmienne wiersze zawierają wartość, którą mają, kiedy są drukowane (ponieważ jestem leniwy, uzyskałem to, tworząc najpierw prawie quine, w której komórki mają pewną niezerową wartość, i używając wyniku, który jest quine) .


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.