ポリグロットアナグラム強盗のスレッド


22

これがこの挑戦の強盗のスレッドです

警官はOEISシーケンスを選択し、2つの異なる言語で2 つの完全なプログラムを作成し、STDINを介してnを指定すると、シーケンスのn番目のアイテムを生成します。2つのプログラムは相互のアナグラムである必要があります。つまり、それぞれを他の文字から再配置できます。

彼らはOEIS番号、ソースコードとの名前発表します1つのそれはである言語を。

警官が使用する言語以外の言語で実行される元の警官の提出のアナグラムを見つける必要があります。あなただけ見つけなければならない答えクラックする任意のシーケンスを生成し、元のアナグラムである言語やプログラムを、必ずしも警官が考えていた答え。

文字コードで出力するか、STDERRをソリューションに含めることができますが、それは、警官が隠しソリューションを示している場合のみです。STDOUTへの10進出力は常に有効なクラックです。

したがって、警官は、シンボルのリストを使用してタスクを実行する言語を見つけるのをできるだけ難しくするように奨励されます。

得点

最もクラックの多い人がこのセクションの勝者になります。各ソリューションの最初のクラックのみがスコアにカウントされます。

リーダーボード

このチャレンジで起こったすべての人に感謝します。

これがリーダーボードです

Place  User             Score
-----------------------------
1      Adnan            3
1      Kritixi Lithos   3
1      Emigna           3
1      milk             3
5      Steven H.        2
5      Wheat Wizard     2
5      jimmy23013       2
8      ETH Productions  1
8      Dennis           1
8      alleks           1
8      Martin Ender     1
8      Oliver           1
8      Conor O'Brien    1

「アナグラム」の部分がわかりませんが、少し詳しく説明していただけますか?
バッファーオーバーリード

@TheBitByteもう1つのソリューションは、元の文字と同じ文字をすべて使用する必要がありますが、異なる順序で再配置します。
小麦ウィザード

追加キャラクターなしで?
バッファーオーバーリード

@TheBitByteはい、文字を削除せずに
ウィートウィザード

回答:


9

05AB1E、38バイト、LoovjoA000290

nXtdief e():return X*X
pr e(input())##

オンラインでお試しください!

意図したソリューションではない可能性が非常に高いですが、機能しています。

説明

n      # square input
 X     # push 1
  t    # push sqrt(1)
   d   # push is_number(1.0)
    i  # if true do the rest of the code (1.0 is not a number so it will never execute)

1
1.0 is not a number?詳しく説明してもらえますか?
-ETHproductions

1
@ETHproductions:この関数is_numberは、数値がのみで構成されていることを確認し0-9ます。通り.番号ではありません、それは偽となります。関数は、より
わかりやすい

8

Jolf、15バイト、AdnanA000290

*&"?!#$|<=@\^{}

ここで試してみてください!間違いなく意図したソリューションではありませんが、ちょっと、それは動作します。

説明

*&"?!#$|<=@\^{}
*                multiply
 &               the two inputs to this func, x, y: x && y
                 returns y if x and y, or the falsey argument.
  "?!#$|<=@\^{}  this string is always truthy, so the second arg is used.
                 two implicit inputs are taken, both equal to the first arg
                 so, this corresponds to *xx, which is x^2.



6

2sable、7バイト、Kritixi LithosA005843

コード:

r^#ei2*

説明:

r         # Reverse the stack, which is a no-op
 ^        # XOR the input with itself, always leading to 0
  #       # If 1, break (which stops the program)
   e      # Compute input nPr input, which always leads to 1
    i     # If equal to one, do the following..
     2*   #   Multiply the input by 2.

オンラインでお試しください!


実際のコードが2バイトしかないのは素晴らしいことです!
Kritixiリトス

6

六角形、13バイト、アドナンA002378

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

オンラインでお試しください!

展開:

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

これがオリジナルであるかどうかは、左上\が使用されていないため100%ではありません。

これら<\>は単なるミラーであるため、プログラムは実際には完全に線形です。

?"&)}=*!@

?          Read input.
 "         Move back and left.
  &        Copy input.
   )       Increment copy.
    }=     Move forward and right and turn around (to face the n and n+1 edges).
      *    Multiply.
       !   Print.
        @  Terminate.

5

V、13バイト、DJMcMayhemA002275

v!:x]''"
@ai1

オンラインでお試しください!

これは、著者が意図した言語での最初の解決策かもしれません。


説明

v!:x]''"   Does nothing
@ai1       inserts 1 a times

おそらく、DJMcMayhemにあなたがそれをクラックしたことを知らせるべきでしょうか?;)
ETHproductions

@ETHproductionsチャットで彼に言ったので、コメントで彼にもう一度話すでしょう。
小麦ウィザード

1
This might be the first solution in the language the author intended.スポットオン。:)
DJMcMayhem


5

Pyth、26バイト、Steven H.A023443

コード:

tQ.qly 7:esau0euii s uxC !

オンラインでお試しください

かなり簡単:

 Q                            Reads input
t                             Substracts 1 from it
  .q                          Quits program (implicit print)
    ly 7:esau0euii s uxC !    None of this ever plays a part...
                                I just thought it'd be fun to scramble it.

2
意図したソリューション!(もちろん、スクランブルを差し引いたものです。)
スティーブンH.

1
すごい!良いアイデア。直接知らせないで申し訳ありません...担当者が少なすぎます。
alleks

問題ない!おめでとうございます。
スティーブンH.

5

Python 3、118バイト、ETHproductions、A042545

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

Ideoneでテストします。

警官提出

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|

違いは何ですか

警官の提出は、2つの理由でPython 3では機能しません。

  • Python 2の入力関数は自動的に1行の入力を評価しますが、Python 3 の入力関数は単に行を文字列として返します。これを修正するには、単にintを呼び出します。

  • print Python 2ではステートメントでしたが、Python 3では関数です。特に、引数を括弧で囲む必要があります。

私たちが必要とすることを意味int()して()ますが、それらの文字はコメントのすべての部分ではありません。つまり、いくつかの変更を行う必要があります。

分数sの代わりに、1 / sを追跡します。

ss=1/(801**.5-28)– の初期化はs=801**.5-28、文字を保存します1/()

a – の更新におけるa [-1]の係数はになり、文字のコストがかかります。int(s)int(1/s)1/

ss=1/(s-int(s))– の更新はになりs=1/s-1//s、キャラクター1//にコストがかかりますが、キャラクターは保存されます(int())

保存された文字は()(int())、コードをPython 3に移植するために必要な文字をカバーしていますが、それらを取得するにはコストがかかり1//ます。//コメントから取得できますが、1他の場所に保存する必要があります。

必要を保存する一つの方法は、(一つだけ?)1交換することである1の初期化にと。これにはこれらの4文字がかかりますが、コメントから取得できます。0==000

これまでのところ、次のコードがあります。

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

=現在の「苦労」の1つを回復するために、saの初期化を1つの割り当てで書き換えることができます。s,a=801**.5-28,[0,0==0]さらに、これによりaが節約され、コメントに追加および削除できる;aがかかります,

2番目=は、入力を変数に保存しないことで保存できます。つまり、range(int(input()))代わりに書き込み、文字を保存しi=ます。私たちは、使用私は、同様のループの後に、しかし、私は番目の要素、我々が交換できるように、右からちょうど秒1であると。同じ理由で、ループの本体をに置き換えることができます。i-2a[-2]i

現在、Python 3コードを機能させるための順列があります。

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

ただし、このコードはPython 2でも機能します!これを修正する1つの方法は、次のものに置き換えるprint(a[-2])こと(print(a[-2]),)です。コメントに必要な文字があります。前述のように、printはPython 3の関数であるため、タプルNone、)を作成します。ただし、Python 2のprint ステートメントは、タプルリテラル内のSyntaxErrorです。


ダン、いい...多分、コメントのないバージョンを書くのにもう少し時間を費やすべきだった。目的のソリューションを投稿します。
ETHproductions

Python 2と3の両方で機能するプログラムの修正版を作成しました。コメントは使用せず、非常に異なる(意図した)ソリューションを使用します。別の回答として投稿する価値はありますか?
ETHproductions

Python 2と3の両方で機能する場合、有効なソリューションではありません。クラックは元の言語では機能しません。
デニス

分かりません。意図したクラックはPythonにはありません。
ETHproductions

ああ、あなたは新しい警官の提出を意味します。私たちはこれとは異なる亀裂について話していると思っていました...確かに、先に進んで投稿してください。
デニス







2

凸、75バイト、boboquackA004526

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;

オンラインで試す

使い方:

2  e# push 2
 / e# pop first 2, divide, push result
   e# push a bunch of garbage but discard it all with semi-colons (;)
  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;



1

05AB1E、25バイト、MegoA000583

コード:

nnYi=put("");prit`Y**4`,X

説明:

n       # Square the input
 n      # Square the squared input
  Y     # Constant that pushes 2
   i    # If equal to 1, do the following:
    =put...

オンラインでお試しください!


ああ、さあ、あなたは私を12秒倒しました:)
エミグナ

@Emigna答えの間の時間はすごいです:p。
アドナン

1
私が最初に投稿を押したときも登録しなかったので、ほとんど瞬時に表示されていました:)
エミニャ

1

Dip、8バイト、OliverA000042

(1J&F},1

説明

              #Implicit Input
(             #Start range loop
 1            #Push 1 to the stack
  J           #Join all the elements in the stack
   &          #End program
    F},1      #These are ignored

面白いのは、これが意図した言語だったことです!ディップはオリバーによって作成されたエソランです。

テストケースとコマンドラインからのDipの実行

$python3 dip.py
Dip v1.0.0 by Oliver Ni.
>>> (1J&F},1
> 4
1111
>>> (1J&F},1
> 7
1111111

1

2セーブル、14バイト、DopappA121377

Q@5 2*%6 8*+.&

オンラインでお試しください。

仕組み(多かれ少なかれ):

Q@
  5              # Push 5
    2            # Push 2
     *           # Pop (2), pop (5), push 5*2=10
      %          # Pop (10), pop (input), push input%10
       6         # Push 6
         8       # Push 8
          *      # Pop (8), pop (6), push 8*6=48
           +     # Pop (48), pop (input), push input+48
            .&


1

Dip、5バイト、OliverA000012

`¸WW/

シーケンス1は、入力が何であっても単に出力します。オリバーの答えは1.0ます。また、このプログラムはを出力し1.0ます。これは明らかに意図したソリューションです。

説明

`¸                  # push character `¸`
  W                 # pushes 1000000
   W                # pushes 1000000 also
    /               # divides the last two items in stack resulting in 1.0
                    # implicit output (1.0)

代替ソリューション(@milk提供)

、5バイト

WW¸`/

オンラインでお試しください!

説明

                  // implicit input
W                 // pushes -1
 W                // pushes -1 also
  ¸               // calculates the LCM of the two numbers (which evaluates to 1)
   `              // finds its string representation
    /             // slices the string (so that it would evaluate to "1")
                  // implicit output

1
凸の代替亀裂:WW¸`/
ミルク

@milkありがとう!私は私の最新の編集にこれを追加しました
KritixiのLithos

あなたのConvexプログラムは、あなたが思っているように機能しません。現時点では、-1を2回プッシュし、それらをLCM(1)にし、文字列表現を見つけ、最後に"1"すべての[input]文字で文字列(これは)をスライスします(入力は数字であるため)
GamrCorps

@GamrCorps今はどうですか?
クリチキシリトス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.