チペオエニグママシン(強盗)


8

警官のポストについては、Cheepo Enigmaマシン(警官)

強盗の提出は、警官のコードの出力を受け入れ、その警官のコードによって提供されるすべての出力の入力を返すプログラム/関数で構成されます。(言い換えれば、逆関数を書く必要があります)

ハッシュ化または暗号化のみを目的とするビルトインは使用できません。

入出力フォーマット

8ビット(0または1)、または1〜256、0〜255、または-128〜127の範囲の10進整数。標準I / OまたはファイルI / Oを使用できます。関数は値を出力として返すこともできます。入力と出力は同じ範囲(たとえば、バイナリ、1〜256、0〜255、または-128〜127)に属している必要があります。これは、警官が使用する範囲と同じでなければなりません。

得点

警官のバイト数とバイト数の比率。最も高いスコアが勝ちます。

参照用にあなた自身の警官コードに対する強盗の試みを提出することができます。(もちろん、このコードは当選の対象ではありません)

通知

対応する警官の回答を編集して、新しいバイト数と対応する比率を含めてください。


2
最初はどうやってエミニャを機械にするのかと思っていました。その後、私はあなたがユーザーについて話していなかったことに気づきました。
マジックタコの壷

わかりました。もう一度お邪魔して申し訳ありませんが、今度は問題がないことを確認したいと思います。brainfuck回答がバイト(コードポイント0〜255)を読み取って出力し、Jelly回答が0〜255の整数を受け取り、同じ範囲の整数を返す場合、それは許容されますか?
デニス

@デニスいいえ、そうではありません。たぶん、あなた(または他の誰か)は、これをより明確にする別の言い回しを提案できます。
ghosts_in_the_code 2017

@carusocomputing Emignaは機械ですよね?彼はすべての05AB1Eプログラムを自分のメモリシステムにロードしています。
caird coinheringaahing 2017

回答:




2

C、デイブ作、64/ 95 92 85

b,i,e,t[256];r(x){for(;!b;++i,b=e==x)for(srand(i&&e);t[e=rand()%256]++;);return i-1;}

ここでお試しください

C、短いバージョン、64/ 89 71

i,e,t[256];r(x){for(srand(1);t[e=rand()%256]++||++i,e!=x;);return i-1;}

これは実装固有ですが、TIOで動作します。PHPソリューションと同じ長さですが、これより短くすることはできませんでした。

ここでお試しください


わかりました、それから警察の提出でそれを取り上げます。お知らせいただきありがとうございます。
アドホックガーフハンター2017



1

ゼリー22/3 = 7 1/3

⁹ḶDÞḊi

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

fənɛtɪkによるCOPの提出は、返すことであったn個0 -indexed)を辞書ドメインを使用して小数をソート[0,255]

私は最初の文字通り、動作について説明逆⁹ḶDÞi⁸‘-の低下範囲取る256⁹ḶおよびÞ小数リストへの変換の鍵機能によって、それをソートするように指示します、D。次に、のインデックスを見つけてi、入力を、減算して1にします(ゼリーリストには1のインデックスが付けられます)。

次に、並べ替えたリストをでデキューしてゴルフをしました。項目が見つからない場合i戻り0を除去最初の要素(の必要に応じて0他のすべてが、減少の除去を可能にする、一つの指標以前発見されている間、)順番に与える、i左側から右側に暗黙的な入力を(のみ)モナディックリンクへの入力。



1

ヒストクラートによるJavascript、27/29

x=>x-65?x-126?x*127%258:131:6

悲しいことに、それを壊すために2つのハードコーディングが必要です。元の関数は値を130にマップせず、値を256にマップすることに注意してください。


1
範囲に256を含めることは、規則(「8ビット(0または1)、または範囲1〜256の10を底とする整数」)に従って合法です。ただし、これはその範囲では依然として有効な強盗です!
ヒストクラート2017

1

PHP、スコア64/71

for(srand(0);$a<256;)$b[$c=rand()%256]++||$d[$c]=$a++;echo$d[$argn]|0;

幸いなことに、PHPはCのようなstdlibにrand転送するだけです。つまり、同じstdlibを使用している限り、これは機能します。つまり、TIOでは機能しますが、たとえばsandbox.onlinephpfunctions.comでは機能しません。Daveのコードの現在のバージョンは、疑似ランダムシーケンスを反復処理し、n番目の一意の値を返すだけので、ゴルフ言語がstdlibも使用している場合は、はるかに短い回答になる可能性があります。

以下は、stdlibに依存しないDaveのコードの実装です。それも役立つかもしれません。


これで言語を切り替える方法を見つけるための+1!なぜこれが必要ではないのsrand(1)ですか?また、こちらも試してみてください。
デイブ

@Dave srand(x&&f(x-1))これは、最初のラウンドでx==0シードされる場合にのみ停止し0ます。次の呼び出しで変更されない理由がわかりません。
クリストフ

それはそう@Dave srand(0)休憩をrand(参照ここ)。srand(0)自動的にに昇格すると思いますsrand(1)。毎回違う種を使うことができたら、それを壊すのがかなり難しくなると思います。
クリストフ

これが機能するのは興味深いことです。TIOで使用されるstdlibバージョンに固有のようですが、Cでの動作は明らかに同じですが、clangを使用するローカルマシンでは、0のrespでsrandを再起動する必要があります。だけでなく0で一度それを呼び出すの各反復の1、
Appleshell

1
@Appleshellは、クリストフの疑惑が正しいようです:glibcには特別なチェックがあります。ここを参照してください:stackoverflow.com/a/8049852/1180785(clangについて言及しているので、ローカルはOSXなので、glibcはないと思います)
Dave







0

C(gcc)by Bijan、32/30

g(x){x=x?g(--x)*205+51&255:0;}

ゴルフを楽しんでいました、ありがとう!x=gccとtccを使用してリターンをスキップすることができます(それを含めるように回答を変更したい場合があります)。g(--x)*205+51&255は逆です。


0

ゼリー37/11

O_77×191%⁹Ọ

警官と同じI / Oフォーマットを使用します。それが必要かどうかはわかりません。

テーブル全体を表示するには、オンラインで試してください

使い方

入力nの場合、警官の答えはf(n):=(((((n + 5)%256×2)%256 + 2)%256×9)%256を計算します。%は線形演算子なので、これはf(n)=(((n + 5)×7 + 2)×9)%256と同等です。正しい項を展開すると、f(n)=(63n + 333)%256 =(63n + 77)%256になります。

これを逆にすることはかなり簡単です。追加を取り消すには、77を引くだけです。また、191×63%256 = 12033%256 = 1なので19163256を法とする逆であるため、191を乗算すると63が乗算されます。このように、g(n)=(n-77)×191%256fの逆を定義します。

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