Polyglot Anagrams Cops 'Thread


44

To wyzwanie ma dwa wątki. To jest wątek gliniarzy. Wątek rabusiów znajduje się tutaj .

Wyzwanie polega na wybraniu sekwencji OEIS i napisaniu dwóch pełnych programów w dwóch różnych językach, które produkują ten n-ty element w sekwencji, gdy otrzyma n przez STDIN lub inne formy standardowego wejścia, gdzie n jest dowolną liczbą dodatnią. Jednak twoje dwa programy muszą być anagramami, co oznacza, że ​​każdy z nich można zmienić na podstawie liter drugiego.

Programy muszą wypisać dziesiętną liczbę, a następnie opcjonalne białe znaki do STDOUT. Programy mogą wyświetlać dane wyjściowe do STDERR, jednak należy je zignorować, a jeśli ukryta sprawa to zrobi, należy wyraźnie stwierdzić, że tak jest.

Jeśli chcesz, możesz także generować kod znakowy. Jeśli jednak zrobisz to w swoim ukrytym rozwiązaniu, musisz to podać w treści swojego zgłoszenia.

Następnie podasz numer OEIS, kod źródłowy i nazwę jednego języka, w którym się znajduje.

Rabusie złamią twoje zgłoszenie, jeśli znajdą anagram oryginalnego zgłoszenia, który działa w języku innym niż ten, który już przedstawiłeś. Do zgryzienia odpowiedź muszą tylko znaleźć dowolny język i program, który generuje sekwencję i to anagram od oryginału, niekoniecznie odebrać można było myśleć o.

W związku z tym zachęcasz się do jak najtrudniejszego znalezienia języka, który wykona zadanie, korzystając z ich listy symboli.

Punktacja

To jest więc zwycięzcą jest najkrótszy niezakłócony program.

Języki

Języki zostaną uznane za różne, jeśli dwa proponowane rozwiązania nie zakończą zadania w obu językach. Obejmuje to różne wersje tego samego języka, o ile ani rozwiązanie policjanta, ani rozwiązanie rabusia nie wygenerują poprawnych danych wyjściowych w języku drugiego.

tzn. jeśli istnieją dwa rozwiązania 1 i 2, które są odpowiednio w języku A i B, rozwiązanie 2 nie może generować poprawnych danych wyjściowych w języku A, a rozwiązanie 1 nie może generować poprawnych danych wyjściowych w języku B.

Bezpieczeństwo

Po tym, jak Twoje zgłoszenie nie zostanie spakowane przez tydzień, możesz opublikować swoje rozwiązanie i uznać swój post za bezpieczny. Jeśli po tygodniu zdecydujesz się nie publikować rozwiązania, Twoja odpowiedź może być nadal łamana.


4
Aby przejrzeć losowe sekwencje OEIS w poszukiwaniu pomysłów, przejdź do oeis.org/webcam
mbomb007,

Jak by to działało z językami, które lubią używać flag do tłumacza, takich jak Perl? Czy są zdyskwalifikowani? Czy flagi są liczone jako część kodu? Czy flagi są „bezpłatne” (nie są zawarte w kodzie lub są w ogóle ujawniane)?
Emigna,

Czy ukryty program może wyjść z błędem (po wygenerowaniu wyniku)? Czy powinno to być wskazane w odpowiedzi?
Luis Mendo,

1
Nie jestem pewien, czy byłoby to pomocne dla kogokolwiek innego, ale to podkreśla wszystkie pozostałe brakujące znaki lub powielone: codepen.io/anon/pen/BQjxRK
Dom Hastings

1
Byłoby miło, gdyby istniał fragment kodu stosu, który wyświetlałby niezrackowane odpowiedzi, najpierw najstarsze.
mbomb007

Odpowiedzi:


15

Python 2, 118 bajtów, A042545 Pęknięty

i=input();s=1/(801**.5-28);a=[0,1]
for p in range(i):a+=[a[-2]+a[-1]*int(s)];s=1/(s-int(s))
print a[i]#,,,.//000fhlmo|

Nie chciałem implementować trywialnej sekwencji, więc zdecydowałem się na mój identyfikator użytkownika PPCG. Najpierw napisałem to w innym języku, co powinno dać ci wskazówkę co do tego języka, choć założę się o 100 dolarów, że zostanie to złamane w golfowym języku, zanim zostanie złamane w zamierzonym innym języku.

Uwaga: Z powodu błędów precyzji zmiennoprzecinkowej jest to dokładne tylko do wartości wejściowej wynoszącej 14. Planowane rozwiązanie jest takie samo.

Zamierzone rozwiązanie, JavaScript (ES7)

for(i=prompt(),s=1/(801**.5-28),a=[1,0];i--;s=1/(s-n))
  n=s|0,a.unshift(a[1]+a[0]*n);
alert(a[0])  //#+2:[]giiiiinnpt

Działa w prawie taki sam sposób jak rozwiązanie Pythona, chociaż sekwencja jest przechowywana jako pierwsza, a nie najpierw, ponieważ JS nie obsługuje indeksowania ujemnego.


2
Nie mogę uruchomić obudowy A042545 (15). OEIS mówi, że jest to 53000053, ale twój program mówi, że jest to 27666361 (przynajmniej na mojej maszynie).
Boboback

@ boboquack Dane wyjściowe dla 16to w rzeczywistości 53000053, ale po tym zdaje się, że nie ma żadnych pasujących terminów. Zastanawiam się, dlaczego ...
ETHprodukcje

Może błąd zmiennoprzecinkowy, który pogarsza się stopniowo?
Boboback 11.11.16


1
Cholera, miałem rację! :( To było tak blisko, jak tylko mogłem: gist.github.com/dom111/bd9be933cb8ccd0e303601bf73d525b6 Dzięki za trening i tak, potrzebowałem, |()ale po prostu nie mogłem ich zdobyć!
Dom Hastings

10

Brain-Flak, 24 bajty, A000290 , Bezpieczny

Jeszcze jedno kwadratowe rozwiązanie. Tym razem nie ma nic oprócz nawiasów

({(({}[()])()){}[()]}{})

Zamierzonym rozwiązaniem było Brain-Flueue , wersja flakingu mózgu, w którym zamiast stosów używa się kolejek. Program był:

({(({})[()]){}}{})[()()]

Języki są uważane za odrębne, ponieważ żaden z dwóch programów nie zatrzymuje się, gdy są uruchamiane w innym języku.


Działałoby to w Glypho, jeśli wprowadzanie / wyprowadzanie za pomocą kodu znakowego jest dozwolone ...
jimmy23013

@ jimmy23013 co to jest Glypho?
Wheat Wizard

6
esolangs.org/wiki/Glypho ((([{}{}{]]}[)))((){))(}
jimmy23013

@WheatWizard Jeśli jest pęknięty, czy możesz edytować odpowiedź, aby to pokazać?
mbomb007

@ mbomb007 It is not cracked
Wheat Wizard


7

CJam , 7 bajtów, A005843 Pęknięty!

ri2*e#^

To jest podstawowa 2*nsekwencja.

Wyjaśnienie:

r          e# read input
 i         e# convert to integer
  2*       e# multiply it by 2
    e#^    e# this is a comment that is ignored by the interpreter

Wypróbuj online!


Oryginalne rozwiązanie, marchew

#^i*2er

Marchew jest stworzonym przeze mnie esolangiem. Dawno temu przestałem go rozwijać. Wybrałem to dlatego, że miałem nadzieję, że innym językom będzie trudno skomentować niepotrzebne części kodu.

Wyjaśnienie:

#^            This pushes the input to the stack (anything before the ^ is the stack)
  i           Convert stack to integer
   *2         Multiply it by 2
     er       These are ignored because they are not Carrot commands
              Implicit output

Wypróbuj online!


1
ri#e^*2działałby w galaretce, gdyby *mnożenie zamiast potęgowania. Tak blisko ...
ETHproductions


Miałem wszystko oprócz rpyta. Ekscytujące zobaczyć oryginalny kod tego.
Emigna,

1
@Emigna Dodałem oryginalny kod
Kritixi Lithos


5

Brain-Flak, 44 bajty, A000290 Pęknięty

<({({})({}[()])}{}))()()()turpentine/"*"*4splint>

Wypróbuj online!


Oryginalne rozwiązanie, Python 2

print(input()**(len(set("{}{}{}[]()<>"))/4))


Teraz jestem naprawdę ciekawa. Jakie było twoje pierwotne zamierzone rozwiązanie? Mogę powiedzieć, że to python, ponieważ widzę len set inputi print(i ponieważ wiem, że lubisz pytona), ale nie mogę zrozumieć, w jaki sposób to
wylicza

Dodano @DrMcMoylex
Wheat Wizard


5

Python 2, 25 bajtów, A000583 , pęknięty

Y=input("");print`Y**4`,X

Program kończy pracę z błędem po wydrukowaniu wyniku.


Mój ukryty kod (znacznie różni się od pękniętego rozwiązania!):

Właściwie 25 bajtów

4,n`*`Y")ii(*nppruttY;="X

Wypróbuj online!

Wyjaśnienie:

4,n`*`Y")ii(*nppruttY;="X
4,n                        input, repeat 4 times
   `*`Y                    do * until the stack stops changing (fixed-point combinator)
       ")ii(*nppruttY;="X  push this string and immediately pop and discard it


5

Python, 118 bajtów, A042545 , Bezpieczny

i=int(input());s=pow(801.0,0.5);a=[0|0,1]
for Moshprtflmah in range(i):s=1./(s%1);a+=[a[-2]+a[-1]*int(s)];
print(a[i])

Tym razem działa zarówno w 2, jak i 3. I nie ma komentarzy! Co zrobisz?

Uwaga: Podobnie jak w przypadku starego rozwiązania, traci on precyzję po pierwszych 15 wyrazach z powodu błędów arytmetycznych zmiennoprzecinkowych.

Zamierzone rozwiązanie, JavaScript (ES6)

giiiiinnnnprt:
i=prompt([n=+2]);s=Math.pow(801,.5);for(a=[1,0];i--;a.unshift(a[1]+a[0]*(s|0)))s=1/(s%1)
alert(a[0])   

Chociaż zachowałem kilka starych wersji, jakoś udało mi się zgubić kopię, ale na szczęście złożenie jej razem z innymi nie było zbyt trudne. Widzę teraz, że miałem obce prtprogramy w obu programach, które można było rozegrać. No cóż.


Pomyślałem, że przypomnę ci, że możesz oznaczyć to jako bezpieczne, jeśli chcesz.
Wheat Wizard

@WheatWizard Dzięki, dodałem moje zamierzone rozwiązanie.
ETHprodukcje

5

Python 2, 124 bajty, A144945 , [Bezpieczny]

Złamanie tego przyniosłoby ci nagrodę w wysokości 500 powtórzeń! Za późno!

Liczba sposobów umieszczenia 2 królowych na szachownicy n X n, aby atakowały się nawzajem.

Mam nadzieję, że nie jest to zbyt łatwe. Ustawiłem swój kod, aby białe znaki były wyraźnie widoczne. Są to tylko spacje i znaki nowej linii.

Uwaga: zamierzone rozwiązanie jest generowane za pomocą kodu znakowego

n=input();print((3+2)*n*n+~0*6*n+1)*n/3;            +6;



























+7+7+7+7+7+7+7+7+7;+++++++++++++++9+9*9*9

Wypróbuj online

Zamierzone rozwiązanie, Zagłówki :

r2=ni***p**
(


p((0 ;3+++3;+;/


)





i+++nn
 +)7
n

n+++ 


17+~
 +)7;97++++7


69+9n+ ++7+n 69
 +7+ ++7


**7+++tut

Jest to równoważne z następującym programem BF:

>>,[->>>+>>>+>>>+++++<<<<<<<<<]>>>->>>>>>-<<<[[>+<-]>[>>[<<<+>>+>-]<[>+<-]<-]<<<<]>>+++>[-<-[<+<<]<[+[->+<]<+<<]>>>>>]<<<.,.

4

Fuzzy Octo Guacamole, 26 bajtów, A070627 [Bezpieczny]

49++*5^pm#]%:"?:.=:#,|"1:@

Przypadki testowe:

1 -> 1
3 -> 23
5 -> 1

Rozwiązanie:

^::::|*?1=#@]","%.#49++5pm

Działa w Magistack.


Witaj! Przypominam, że tę odpowiedź można oznaczyć jako bezpieczną. Nie musisz się spieszyć, ale nikt nie złamał go w ciągu tygodnia. Dobra robota, nie mogę się doczekać rozwiązania
Wheat Wizard,

Fajnie, zrobię to i drugi raz, kiedy wrócę do domu.
Rɪᴋᴇʀ

3

Pyth, 75 bajtów, A004526 Pęknięty, mleko

Bardziej zabawny test niż cokolwiek innego, ale:

/Q/////////////////****22222 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2;;;;;

Wypróbuj online!

Roztwór mleka (wypukły):

2/Q2 2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2*2*2*; 2*;                 2; 2; 2;

Wypróbuj online

Zamierzone rozwiązanie (///):

/*///;2/;// ///22/Q//2;///;//;***2222222222222222222222                    

Wypróbuj online

Pobiera dane wejściowe w postaci 2 przed ostatnim średnikiem i wyświetla prawidłową liczbę Q.

Sekwencja jest indeksowana 0 (tzn. 0 to 0, 1 to 0, 2 to 1, ...)

Znaleziono niewielkie błędy składniowe w ///, więc edytowałem wszystkie rozwiązania.



3

MATL, 7 bajtów, A000217 , pęknięty

:sp{1}x

Sekwencja jest n(n+1)/2(Liczba trójkątna), począwszy od wejścia n=1w sposób określony przez wyzwanie: 1, 3, 6, 10, ... (wyjście na wejście 0nie jest gwarantowana być taka sama w obu programów).

Program w innym języku kończy się z błędem (po wygenerowaniu poprawnego wyjścia w STDOUT).

Wypróbuj online!

:            % Push [1 2 ... n], where n is implicit input
 s           % Sum of that array. Gives the desired result
   p         % Product of that. Gives the same number
    {1}      % Push a cell array containing number 1
       x     % Delete it


@ StevenH. Dobra robota! Moje oryginalne rozwiązanie tox:ps{}1
Luis Mendo,


3

Python 3, 27 bajtów, A000012 , Pęknięty

Tym razem brak danych wejściowych!

if 1:
    if 1:
        print( '1' )

Wcięcia są tabulatorami, ale nie do zapisywania bajtów - są one wymagane do białych znaków.

Nie sądzę, że potrzebuje linku do TIO lub wyjaśnienia!

(Prawdopodobnie w jakiś sposób nie zajmie to długo)

Zamierzona odpowiedź (białe znaki):

-Start-


    if1:if1:print('1')
-End-

(Początek i koniec nie jest częścią programu)

Przepraszam, zapomniałem dodać, że drukuje do STDERR:

Wypróbuj online!



Wydaje mi się, że to ma być biała spacja, ale to wypisze błąd do STDERR, ponieważ brakuje wymaganych linii do zakończenia na [LF] [LF] [LF].
Martin Ender,

1
@ mleko Nie ty znowu! : D
Boboback

1
@boboquack To działa, ale to nie drukuj na stderr (co widać poprzez aktywację trybu debugowania TIO), a wyzwanie, mówi, że odpowiedzi należy określić, czy ukrytych zapisów językowych na stderr.
Martin Ender,


3

Fuzzy Octo Guacamole , 11 bajtów, A001844 [Bezpiecznie!]

hha02^d+**+

dh*h++^2*0aSzczelina, która tego rodzaju działa, jest w Pyth. Nie jest to jednak właściwy format wyjściowy.

Mój kod wciąż tam jest! (i nie ma go w Pyth)

Przypadki testowe:

0 -> 1
1 -> 5

Rozwiązanie:

^++d0ah*2*h

W Jolfie.


1
Przysięgam, wygląda na to, że został stworzony dla Jolfa, ale po prostu nie mogę zrozumieć, że d...
ETHprodukcje

Pęknięty (mam nadzieję ...)
ETHprodukcje

@ETHproductions ah, nice. Nie jesteś pewien, czy to się liczy? Zobacz edycję.
Rɪᴋᴇʀ

Mój kod wypisuje nowy wiersz, ale nie ma spacji. To samo z prawidłowym kodem.
Rɪᴋᴇʀ

@EasterlyIrk Pomimo tego, co powiedziałem, nie uważam, że odpowiedź podała crack. Wydaje mi się, że wszystko, co powiedziałem, nadal jest prawdą, jednak nie uważam, aby wiodące wartości białych znaków były prawidłowe i poprawię to pytanie, aby to odzwierciedlić.
Wheat Wizard


2

JavaScript ES6, 38 bajtów, A000290 , pęknięty

J=>eval(Array(J).fill(J).join`+`)|2-2;

Ten kwadratowy pociąg jest całkiem sprytny, ale nigdzie nie jedzie szybko. (Zdobądź to? Pociąg kwadratowy ? Jak w, koła? Nie? Ok, w porządku. Krytycy .)


Zamierzona odpowiedź: siatkowa ( spróbuj online! ),

in2Jo;=>eval(Array(J).fill(J).j`+`)|-2
in      take input, convert to number
  2J    raise to the second power
    o;  output and terminate; ignores following chars

2
Twój kod próbuje mnie przekonać, że drugim językiem jest J: P
ETHproductions



2

2sable , 13 bajtów, A002378 , pęknięty!

Mam nadzieję, że czegoś nie umknęło. Oblicza a (n) = n × (n + 1) :

>*?"!&)<=@\\}

Moja wersja:

?"\>@&*})<\=!

Lub rozwinięta wersja:

  ? " \
 > @ & *
} ) < \ =
 ! . . .
  . . .

Zauważ, że >w lewym górnym rogu nie jest używany (z wyjątkiem programu 2sable). Zrobiłem to, aby zmylić złodziei (ale to oczywiście nie działało haha).

Wypróbuj online!



@MartinEnder Dobra robota! Zaktualizuję swoją odpowiedź oryginalnym przesłaniem :).
Adnan



2

Python 2, 35 bajtów, A048735 , Bezpieczny

print(lambda u:u&u<<1)(input())>>1

Oryginalne rozwiązanie było w moim własnym języku programowania Wise .

:<<>&>print(lambda uuu1)(input())1

Większość postaci nie ma znaczenia. Ważnymi bohaterami są pierwsze sześć. :tworzy dwie kopie pierwszego przedmiotu na stosie. <<>bit przesuwa się dwukrotnie w lewo i raz w prawo, co jest równoważne przesunięciu bitu raz w lewo. &pobiera bitowy oraz górny i drugi element (oryginał i nieco przesunięta kopia). Na koniec >bit przesuwa się raz w prawo.


2

05AB1E, 5 bajtów, A000012 , bezpieczny

$;$1?

Sekwencja 1. Wypróbuj online

Zamierzone rozwiązanie: Arcyou

1;$$?

Wypróbuj online . Nie mogłem znaleźć dokumentacji dla tego języka, więc nie mam wyjaśnienia, jak dokładnie działa.


Głupi średnik ... Mogłem niemal używać Retina, ale nie mogę mieć zarówno 1i ;.
mbomb007

1
Nie zostało to złamane
Wheat Wizard

Wygląda na to, że tę odpowiedź można teraz oznaczyć jako bezpieczną. Ponieważ spędziłem sporo czasu próbując złamać ten, jestem bardzo chętny zobaczyć zamierzoną odpowiedź.
Wheat Wizard,

Czy ta odpowiedź nie powinna być teraz oznaczona jako „zaakceptowana”?
mbomb007

1

Python 2, 70 Bytes, A000217 Cracked!

Mam przeczucie, że nie będzie to łamane w języku, którego użyłem dla innej wersji, zobaczymy :)

o=input()
v=0
i=1
while o:
 v+=i
 i+=1
print v


#|  d00->1@@@++-^,,[

Zrozumiałem później, że niepoprawnie zaciemniłem kod (nie zmienia to poprawności opublikowanej odpowiedzi). Oto kod, od którego zacząłem w Haystack:

v
0
v
0
i
1
-
>      d0[v
^-1@+@d+1@?,,o|


1

05AB1E , 9 bajtów, A000042 Pęknięty!

1×,1*-^$)

Jest to jednoargumentowa reprezentacja liczb naturalnych (OEIS). Gdyby na przykład dane wejściowe były 3na przykład, dane wyjściowe byłyby 111.

Wyjaśnienie:

                    # implicit input
1                   # pushes 1 to the stack   
 ×                  # pushes "1" × (the input)
  ,                 # outputs the stack
   1*-^$)           # irrelevant

Wypróbuj online!


Oryginalne rozwiązanie, marchew

1^*$-1×^)

Wyjaśnienie

1^             Push "1" to the stack
  *            Multiply the string by
   $-1         ...the input (as an integer) minus 1 times
      ×,)      Ignored by the interpreter

W *mnoży smyczkowych (n+1)razy, tak że a^*3skutkuje aaaai nie aaa. Dlatego odjęłam 1od danych wejściowych.

Dopiero teraz zdaję sobie sprawę, że )nie miało to znaczenia w obu językach: D

Wypróbuj online!



Jaki był oryginalny ukryty język?
Wheat Wizard

@WheatWizard Whoops, dziękuję za znalezienie tego. Dodałem teraz język
Kritixi Lithos

1

J, 2 bajty, A000290 , Pęknięty

*~

Cóż, równie dobrze może zacząć iść na te dwubajtowe. Wydajność n × n lub n 2 .

zamierzone rozwiązanie, Jolf, 2 bajty

*~

Dobrze. Tak. To jest mój własny język i myślę, że działa, ponieważ ~szuka rozszerzonego znaku, ale go nie znajduje, więc po prostu go ignoruje. ¯ \ _ (ツ) _ / ¯ Ups.



@StevenH. dobra robota! Edytowałem z zamierzonym rozwiązaniem.
Conor O'Brien

@ ConorO'Brien Twoje zamierzone rozwiązanie nie było prawidłowym rozwiązaniem. Aby języki można było uznać za odrębne, ani oryginał, ani rozwiązanie nie może być poliglotą w obu językach
Wheat Wizard

@WheatWizard Oh. To niezręczne.
Conor O'Brien



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.