その言語を知っていますか?


34

仕事:

あなたの課題は、以前の提出物とそれ自体を入力として、それらが書かれている言語を次の形式で出力することです。

最初のプログラムはRubyであるとします。1Rubyは1このチャレンジで使用されるst言語であるため、出力する必要があります。サンプルプログラムは次のとおりです。

a=gets
puts 1

入力として与えられると、を返します1

次のプログラムはPythonであるかもしれません。2Pythonは2チャレンジで使用されるnd言語であるため、出力する必要があります。サンプルプログラムは次のとおりです。

print(1 if input()[0]=="a"else 2)

最初の送信1を指定すると、を出力し、それ自体を指定するとを出力します2

言語を繰り返すことは許可されていますが、以前の回答の言語で回答を送信することは許可されていません。

たとえば、3番目のプログラムがRubyである場合1、最初のプログラムとそれ自体(Rubyが1使用されるst言語であるため)を指定して出力し、2番目のプログラムを指定して出力する必要があります2


ルール:

  • n現在チャレンジに回答がある場合、少なくともfloor(n / 3)異なる言語が必要です。この規則に違反する提出物は失格となります。
  • 2つの「隣接する回答」(answer nとanswer n+1)が同じ言語を使用することはできません。
  • 言語の異なるバージョンは、異なる言語としてカウントされません(そのためPython 2 == Python 3)。
  • 回答は以前の提出物を完全に入力として受け取らなければなりません。
  • 最初の提出には入力が必要です。
  • 複数の回答を連続して送信することはできません。
  • 「回答の繰り返し」(前回の提出とまったく同じコードを持つ回答)は許可されていません。
  • 回答は、その回答に割り当てられたバイト数を超えることはできません-詳細については、「割り当てられたバイト数」を参照してください。

割り当てられたバイト数:

各回答番号について、その回答にn割り当てられたバイト数は45 + 5nです。


回答のフォーマット:

答えを次のようにフォーマットします。

# {answer no.}, {language}
{program}
This prints:
- `1` in answer(s) {all answers using 1st language, with links}
- `2` in answer(s) {all answers using 2nd language, with links}
...
{optional explanation}

回答リストについては、次を実行します。

- `1` in answers [1]({link to answer}), [3]({link to answer})...

得点:

7日後に有効な提出物なしで生き残る最初の回答が勝者と宣言されます。


1
1人のユーザーが2つの連続した投稿を連続して投稿できますか?
クリチキシリトス

したがって、現状では、変更せずに、答えn°6を答えn°8としてそのまま繰り返すことができ、その後マーティンは答えn°まで彼の番号n°7(間違っていない限り)などを繰り返すことができます課されたしきい値(floor(n / 3)言語など)に達する前に15 。これは意図的な動作ではないと思います。
プランナパス

@plannapus私もこれに気づきました。もちろん、あなたの目標は最後の答えを持つことですので、私も些細なフォローアップがあることを知っているので、あなたは物事を複雑にするかもしれません(私は自分の答えを投稿する前は考えていませんでした)。
マーティンエンダー

3
割り当てられたバイト数は幾何学的な進行で増加します。おそらく、これらの課題は、コードが長くなりすぎるからではなく、言語がなくなるまで終了しません。
ウォルフラム

2
IMOの合理的な固定制限(たとえば、384バイトまたは256バイト)は、より適切に機能し、最終的には厳しい競争を引き起こします。
ツェッペリン

回答:


4

26. > <>(言語12)、164バイト

> <>で私の初めてのプログラム!156文字ですが、UTF-8では164バイトです。

^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
{:}&1+&=?v
      .&0/
v+!?='>'i41i
v+?='y'i47
v+?=' 'i12
v+?=' 'i24
v4
v6
v7
v8
v9
va
  v?(0:i
v1
n;\b1laa*)?+
/"^mwfPes{'tc"i2&01.;

これは印刷します:

  • 1答え1579、及び14(網膜)。

  • 2回答2(Brain-Flak)。

  • 3回答3(APL)で。

  • 4答え412、および15(Javascriptを)。

  • 5回答6および8(R)。

  • 6答え10172022、及び25(バッシュ)。

  • 7回答11および19(Mathematica)。

  • 8回答13(Python)で。

  • 9回答16(Perl)。

  • 10答え1821、及び23(C / C ++)。

  • 11回答24(Zsh)で。

  • 12 この答え(> <>)。

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

説明:

最初の行は単に答え#5です。一番下の行に命令ポインタを送信するだけです。 /魚を右に変え、キャラクター^mwfPes{'tcがスタックに置かれます。入力の1文字が読み取られます(i)。(説明のCためにこの文字を呼び出しましょう。)2をレジスターに入れます(2&)。次に、2行目の先頭(1行目)(01.)にジャンプします。

この行Cは、スタック上の各文字と比較されます。のコピーはCスタックの下部に保持されます。{スタックを回転させてC一番上に置きます。:複製します。}コピーを下に回転させます。&1+&一致が見つかるまで、レジスタ()をインクリメントします。(その場合には、Cレジスタが一致したときに3保持し、ある「C」;場合C。「T」は、レジスタが4を保持している、など)その後、我々は(レジスタの行番号の最初の文字にジャンプ0&.) 。

3行目から13行目Cは、それぞれc、t、 '、{などの場合の対処方法を示しています。ジャンプすると、命令ポインタが後方に移動します。指定された行の最初の文字に到達しますが、ジャンプの後、実行する前にティックを進めるため、行の末尾から逆方向に実行を開始します。各行はスタック上の適切な言語番号をプッシュし、魚をn命令に送信し、命令を出力します。

^この答えの最初の行に私自身の卑劣さのため、最も複雑なケースです。行13はEOFまで入力を読み取ります。次に、15行目に進み、スタックの長さ(l)を100(aa*)と比較します。長い場合()?)、この言語を追加+ b1て12を取得します。それ以外の場合、1はスタックの一番上に残ります。



12

2. Brain-Flak、22バイト

{<>(())(<>)}{}(<>{}())

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

これにより、スタックの最上部がチェックされ、ゼロ以外の場合は反対のスタックに配置されます。次に、反対のスタックをインクリメントして返します。これにより、空のプログラムの場合は1、それ以外の場合は2が返されます。

Brain-Flakのスタックはデフォルトでゼロであるため、空のプログラムはスタックの最上部にゼロを持ち、他のプログラム(ヌル文字で終わるプログラムを除く)は真の値を持ちます。これは、入力スタックで非常に単純なifプログラムを実行できることを意味します。

{      (<>)}{}              #If not zero
 <>(())                     #Push one to the other stack
              (<>{}())      #Switch to other stack and increment by one

この回答を編集していただけますか?誤って反対票を投じました:)
コナーオブライエン

9

3. APL、7バイト

' {'⍳⊃⍞

説明:

      ⍞  read from the keyboard
     ⊃   first item of list, or space if empty
' {'⍳    index into the string ' {', giving N+1 (=3) if not found

8

10. Bash(+ coreutils)[言語6]、 44、74バイト

修正バージョン(言語IDを返します)

expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G

注:これは、入力プログラムテキストの後に、末尾の改行が必要です。


7

9. Retina(言語1)、20バイト

$|}\{|[:'][^]']|,\b1

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

プランナパスのように、私は少し物事を切り替えるために書き直しに行くことにしました、それはまたコードをかなり短くすることになりました(プランナパスの最新を説明するための私の最後の回答の修正は約32バイトになったと思います)。

説明

私の他の回答と同様に、これはさまざまな正規表現の一致の数を数えるだけですが、より効率的にそれを実行します。

  • $文字列の最後に一致します。文字列の最後まで一致するものがある場合でも、これは常に機能する1ため、すべての入力のベースラインが得られます。
  • }\{2番目のプログラム(Brain-Flak)で単一の一致を検出し、そこにカウントをもたらし2ます。バックスラッシュはエスケープに必要ではありませんが、正規表現のこの部分が一致しないようにします。
  • [:'][^]']実際にはかなり派手です。唯一の目的は'、APLプログラムの2つ(言語3)と:JavaScriptプログラムの3つ(言語4)をカウントすることですが、この部分が一致しないようにする必要があります。そのため、次の文字も'、または](一致たい文字の後に表示されないが、このプログラムではここに表示されるため)でないことも確認します。
  • '前の部分からは、すでにRプログラムで1試合を引き起こし、私たちは3以上必要です。部分文字列,1は両方に3回出現し、他のプログラムには出現しません。withの間にトートロジー的な単語境界を追加して、,\b1それ自体が再び一致しないようにします。

うーん、1単にデフォルトの出力であるため、これがRの回答をまったく妨げないことに気付きました。次の答えでそれについて何かしなければなりません。
マーティンエンダー

7

18. C(言語10)、121バイト

これはC89またはC90標準です。Try It Onlineのclangまたはgccで動作します。

main(n){char*v=" ^{ s ePfwm",b[999],*c;gets(b);c=strchr(v,*b);n=strlen(b);printf("%d",n?c?c-v:n>99?4:n>60?5:n>15?1:3:1);}

これは印刷します:

  • 1答え1579、及び14(網膜)。

  • 2回答2(Brain-Flak)。

  • 3回答3(APL)で。

  • 4答え412、および15(Javascriptを)。

  • 5回答6および8(R)。

  • 6回答10および17(Bash)。

  • 7回答11(Mathematica)。

  • 8回答13(Python)で。

  • 9回答16(Perl)。

  • 10 この答え(C)。

以下は、Try it onlineで 18の回答すべてを実行するbashドライバーです。

同等の非ゴルフ(646バイト):

#include <string.h>
#include <stdio.h>
int main(){
    char *v=" ^{ s ePfwm", b[999];
    gets(b); /* buffer overrun if more than 998 characters in the input.
                could be a problem if we get to 191 answers */
    char *c = strchr(v, b[0]); /* Find first character of input in v, or null */
    int n = strlen(b);
    if (!n) {
        printf("1");
    } else if (c) {
        printf("%d", c-v); /* Index of first character of input in v */
    } else if (n > 99) {
        printf("4");
    } else if (n > 60) {
        printf("5");
    } else if (n > 15) {
        printf("1");
    } else {
        printf("3");
    }
    return 0;
}

6

5. Retina(言語1)、23バイト

^$|(?![⊂⍴])[⊂-⍴]|\B=|{}

オンラインでお試しください!(可能なすべての入力をテストします。)

入力内のさまざまなものの一致をカウントします。

  • ^$ 入力文字列、つまり最初の回答が1回一致します。
  • {} 2番目のプログラムには2つあり、このプログラムには1つあります。
  • (?![⊂⍴])[⊂-⍴]コードポイント8834〜9076、exclusiveの文字に一致し、3番目のプログラムで3つの一致を検出します。負の先読みを使用して、このプログラムで範囲の終わりが一致しないようにします。
  • \B=一致して=いるされていない単語文字が先行します。これ=は、4番目のプログラムの4つと一致しますが=、このプログラムとは一致しません。


4

4、JavaScript(ES6)、32バイト

s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1

空の入力の場合は1、入力がa {で始まる場合は2 、anで始まる場合は4、sそうでない場合は3を出力します。


あなたは置き換えることができますs[0]=='{'s[0]>'z'

1
@Masterzagh私もこれをゴルフにかける方法を考えていましたが、悲しいかな、これはコードゴルフではありません:/
Kritixi Lithos

@KritixiLithosええ、しかし彼はすでにゴルフをしているので、さらに先に行きたいと思った。

@Masterzagh人々は、a)後の回答、b)現在作業中の回答を無効にする可能性があるため、このようなチャレンジでは有効な回答を編集しないでください。
マーティンエンダー

@MartinEnder、あなたは正しい。そのため、私はそれを編集しません。私はそれがゴルフのように見えることを知っています(三項演算子のため)が、私は意図的にそのようにそれを書きませんでした...それにもかかわらずすべてのフィードバックをありがとう!
ルーク

4

11. Mathematica [言語7]、53バイト

Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&

引数として文字のリストを取り、正の整数を出力する名前のない関数。入力の最初の文字で分岐し、文字列内の位置を使用"^{'sceP"して出力を決定します。これにより、最初の空のRetinaプログラム最新のRetina回答を除く以前のすべての提出に対して正しい回答が得られます。これらの両方のspitエラーが発生しますが、出力は/._@__->1未評価の関数をに変換するルールによって修復され1ます。


その最初のキャラクターの戦略を台無しにするのは本当に時間だと思う:)
マーティン・エンダー

1
私はするつもりだったが、その後、私は、私はあまりにも私の自身の言語のために正しく出力していた思い出し:D
グレッグ・マーティン

4

16. Perl(言語9)、94バイト

while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}

オンラインでお試しください!(すべての回答をチェックします)。出力「1234151516748149」

これは印刷します:

  • 1、回答1、5、7、9、および14(網膜)。
  • 2と答え2(Brain-Flak)。
  • 3と回答3(APL)。
  • 回答4、12、15の4(Javascript)。
  • 5と回答6および8(R)。
  • 6と回答10(Bash)。
  • 7と回答11(Mathematica)。
  • 8と回答13(Python)。
  • 9この答え(Perl)。

プログラムは入力長をチェックし、現在の言語分布にマップします。


3

6. R(言語5)、61バイト

cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))

入力の最初の文字が何であるかを確認し、それに応じて出力を選択します。

これにより、次のように出力されます。

  • 1回答1および5(Retina)。

  • 2回答2(Brain-Flak)。

  • 3回答3(APL)で。

  • 4回答4(Javascript)で。

  • そして5この答えで。

使用法:

> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))

1
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
{<>(())(<>)}{}(<>{}())
2
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
' {'⍳⊃⍞
3
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
4
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
1
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
5

これをREPLの外部で実行するには、回答8の下のコメントを参照してください
。– plannapus

3

8. R(言語5)、76バイト

c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)

入力の最初の文字をチェックし、(この順番で)を含有するベクターと比較し、空の文字列、{'s及びc。次に、一致のインデックスを出力します(Rインデックスは1から始まります)。一致しない場合は1を出力します。

回答番号6と同じ概念ですが、回答番号7を防ぎますは一致し。

これは印刷します:

  • 1答え15及び7(網膜)。

  • 2回答2(Brain-Flak)。

  • 3回答3(APL)で。

  • 4回答4(Javascript)で。

  • そして、5答えと6と、この答え(R)。

間違っていなければ、この回答のバイト数の許容値は94バイトでした。


FYI Rオンラインインタープリター(rfiddle、ideone、tryitonline)は、stdinの処理に問題があるようです(少なくともreadline()で)。したがって、正常に動作しません。これ(および以前の回答)を試してみたい場合は、インストールされているRのバージョンでローカルに試してみる必要があります。
プランナパス

^ OK、REPLの外側はreadlineに置き換える必要がありますreadLines(file("stdin"))。これは、さらに16文字を意味します。したがって、回答6は77バイト(79から許可)であり、この回答は92バイト(94から許可)でなければなりません。この変更により、オンライン通訳でも動作します。
プランナパス

3

12. Javascript(言語4)、117バイト

注:この1つの間違いを修正するためにキャラクターを変更しました。

c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;

入力の最初の文字をチェックします(cの場合)。入力の長さをチェックします。

出力:

  • 回答1、5、7、9の場合は1
  • 回答2は2
  • 回答3は3
  • 回答4とこの回答は4
  • 回答6、8は5
  • 回答10は6
  • 回答11の7

3

13. Python(言語8)、110バイト

注:この回答は、OPの推奨により、投稿の6時間後に変更されました。

from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N

これは回答10(bash)と同じ考え方ですが、Python 3の場合(このアプローチは16進数を使い果たす前に最大3つのエントリで機能します)。

これは印刷します:

  • 1答え157、および9(網膜)。

  • 2回答2(Brain-Flak)。

  • 3回答3(APL)で。

  • 4回答4および12(Javascript)。

  • 5回答6および8(R)。

  • 6回答10(Bash)で。

  • 7回答11(Mathematica)。

  • 8 この答え(Python)。

オンラインでお試しください!以下のため:回答1回答2回答3回答4回答5回答6回答7回答8回答9回答10回答11回答12、または この回答


現在のバイト制限は何ですか?
Vi。

@Vi .:さて、回答13は149、回答14は163でした。しかし、OPはちょうどそれが答え14のための答え13と115バイト、110バイトになりそうという、45 + 5Nにバイトカウントルールを変更
ニック・マッテオ

おそらく、110バイトのソリューションを用意する必要があります。
clismique

@ Qwerp-Derp:わかった。うまくいけば、それが誰かの進行中の仕事を壊さないことを願っています。
ニックマッテオ

OK、バイト制限がJavaに優しい土地に到達するまで約60の回答を待ちます。
Vi。

3

24. Zsh(言語11)、142バイト

Cでの以前の回答#18は、その後のすべてのエントリに対して変更されずに機能します(demo)。それでは少し混ぜましょう。

typeset -A p
p=("[\$^]*|'\[*" 1 '{*' 2 "' *" 3 '?=>*' 4 'c?[wt]*' 5 'e*' 6 'P*' 7 'f*' 8 'w*' 9 'm*' 10 'ty*' 11)
echo ${p[(k)$1]:-1} #@<`w&X{

最後のコメントの目的は、回答21と23の長さを一致させ、LythのC ++回答でチェックされる文字を使用して、これまでのすべての回答でsha256またはsha384ハッシュの単一文字が一意にならないようにすることです。;-)

これは印刷します:

  • 1答え1579、及び 14(網膜)。

  • 2 答えて 2(Brain-Flak)。

  • 3答え3(APL)で。

  • 4答え412、および15(Javascriptを)。

  • 5答え68(R)。

  • 6答え101720、および22(バッシュ)。

  • 7回答11および19(Mathematica)。

  • 8 答えて 13(Python)で。

  • 9 答えて 16(Perl)。

  • 10答え1821、および23(C / C ++)。

  • 11 この答え(Zsh)。

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


これが複数行にわたる最初の回答だと思います... +1
clismique

2

14. Retina(言語1)、39バイト

'[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$

オンラインでお試しください!(すべての有効な入力をテストします。)


1
マーティンに来て、別の言語で投稿してください...また、回答のフォーマットを行うことはできますか?
clismique

3
@ Qwerp-Derpこれは実際に標準的な正規表現ゴルフの興味深いバリエーションに変わりつつあります。入力のセットを持ち、それらの一部に一致して他の一部に失敗する代わりに、ここでは各入力で特定の数の一致を取得する必要があります。この正規表現は、ある時点で指数関数的に爆発するのではないかと思います。
マーティンエンダー

本当に39バイトですか?TIOは37バイトを報告します。
アーナウド

1
@Arnauld TIOは、シングルバイトエンコーディングを使用することが多いため、Retinaの文字をカウントするためにハードコードされています。ただし、この答えにはUTF-8が必要です。
マーティンエンダー

2

15. Javascript(言語4)、108バイト

ゴルフ

t=>({24:2,86:3,5:4,73:5,68:5,74:7,4:6,79:4,1:8,67:4})[[...t].reduce((r,c,i)=>r*i^c.charCodeAt(0),0)&0x5F]||1

2

17. Bash(+ coreutils + openssl)(言語6)、103バイト

ゴルフ

expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x

私の答え#10と同じ手法を使用しますが、Base64を使用しますエンコードされた辞書ではなく、六角

テスト用に次のデータファイルを作成しました。

6 17 expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
9 16 while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}
4 15 t=>({24:2,86:3,5:4,73:5,68:5,74:7,4:6,79:4,1:8,67:4})[[...t].reduce((r,c,i)=>r*i^c.charCodeAt(0),0)&0x5F]||1
1 14 '[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$
8 13 from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N
4 12 c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;
7 11 Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&
6 10 expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G
1 09 $|}\{|[:'][^]']|,\b1
5 08 c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)
1 07 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}|\b5
5 06 cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
1 05 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
4 04 s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
3 03 ' {'⍳⊃⍞
2 02 {<>(())(<>)}{}(<>{}())
1 01

テスト

for i in `seq 17`
do
  echo -n `cat lchain|sed -n $i'{p;q}'|cut -c1`=\>
  cat lchain|sed -n $i'{p;q}'|cut -c6-|\
  expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
done

6=>6
9=>9
4=>4
1=>1
8=>8
4=>4
7=>7
6=>6
1=>1
5=>5
1=>1
5=>5
1=>1
4=>4
3=>3
2=>2
1=>1

2

19. Mathematica(言語7)、96バイト

Position[ToCharacterCode@StringSplit@";NRU$ Q B [1: =L J, 5% 3 # >",Mod[Length@#,59,33]][[1,1]]&

名前のない文字のリストを入力として受け取り、整数を返す関数:

  • 1答え1579、及び14(網膜)。

  • 2回答2(Brain-Flak)。

  • 3回答3(APL)で。

  • 4答え412、および15(Javascriptを)。

  • 5回答6および8(R)。

  • 6回答10および17(Bash)。

  • 7回答11とこの回答(Mathematica)。

  • 8回答13(Python)で。

  • 9回答16(Perl)。

  • 10回答18(C)。

これまでのところ、回答の長さはすべて異なり、それらは59を法としても異なります。したがって、33、34、...、91の範囲のどの整数が(mod 59)に一致するかによって検出できます。これらはすべて、文字列でエンコードされた印刷可能なASCII文字";NRU$ Q B [1: =L J, 5% 3 # >"です。using ToCharacterCode@StringSplit@は、この文字列をその範囲内の整数の10個のリストのリストに変換しPosition[...,Mod[Length@#,59,33]][[1,1]]、10個のサブリストのどれが入力の変更された長さに一致するかを見つけます。


1

20. Bash(+ coreutils + openssl)(言語6)、121バイト

ゴルフ

expr substr 67A69418476151514321 $(expr index 7042PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1| dc -e16i?p #u

私の答え#17と同じ方法(順番に私の元の答え#10に基づいています)。

現在、10の異なる言語があるため、16進数の位置エンコードに切り替えました。

データ

6 20 expr substr 67A69418476151514321 $(expr index 7042PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1| dc -e16i?p #u
7 19 Position[ToCharacterCode@StringSplit@";NRU$ Q B [1: =L J, 5% 3 # >",Mod[Length@#,59,33]][[1,1]]&
A 18 main(n){char*v=" ^{ s ePfwm",b[999],*c;gets(b);c=strchr(v,*b);n=strlen(b);printf("%d",n?c?c-v:n>99?4:n>60?5:n>15?1:3:1);}
6 17 expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
9 16 while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}
4 15 t=>({24:2,86:3,5:4,73:5,68:5,74:7,4:6,79:4,1:8,67:4})[[...t].reduce((r,c,i)=>r*i^c.charCodeAt(0),0)&0x5F]||1
1 14 '[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$
8 13 from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N
4 12 c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;
7 11 Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&
6 10 expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G
1 09 $|}\{|[:'][^]']|,\b1
5 08 c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)
1 07 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}|\b5
5 06 cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
1 05 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
4 04 s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
3 03 ' {'⍳⊃⍞
2 02 {<>(())(<>)}{}(<>{}())
1 01

テスト(出力)

./test
6=>6
7=>7
A=>10
6=>6
9=>9
4=>4
1=>1
8=>8
4=>4
7=>7
6=>6
1=>1
5=>5
1=>1
5=>5
1=>1
4=>4
3=>3
2=>2

1

23. C(gcc)(言語10)、142バイト

main(c){int d[256]={0};while((c=getchar())!=EOF)d[c]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}

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

  • 1答え1579、及び14(網膜)。

  • 2回答2(Brain-Flak)。

  • 3回答3(APL)で。

  • 4答え412、および15(Javascriptを)。

  • 5回答6および8(R)。

  • 6答え101720及び22(バッシュ)。

  • 7回答11および19(Mathematica)。

  • 8回答13(Python)で。

  • 9回答16(Perl)。

  • 10答えと1821と、この回答(C)。

このプログラムは、さまざまな文字の数をカウントし(ASCIIなので、マルチバイトUTF-8文字は複数のエントリに分割されます)、この文字またはその文字の出現回数に基づいて、慎重に設計された決定ツリーに従います。

決定木は#21から変更されていません(はい!)。まったく同じコードを投稿することは許可されていないため、わずかな変更を加えて純粋なCに戻ります。


0

21. C ++(gcc)(Cのバリアントとしての言語10)、142バイト

main(){int K,d[256]{0};while((K=getchar())!=EOF)d[K]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}

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

  • 1答え1579、及び14(網膜)。

  • 2回答2(Brain-Flak)。

  • 3回答3(APL)で。

  • 4答え412、および15(Javascriptを)。

  • 5回答6および8(R)。

  • 6答え1017及び20(バッシュ)。

  • 7回答11および19(Mathematica)。

  • 8回答13(Python)で。

  • 9回答16(Perl)。

  • 10回答18とこの回答(C)。

このプログラムは、さまざまな文字の数をカウントし(ASCIIなので、マルチバイトUTF-8文字は複数のエントリに分割されます)、この文字またはその文字の出現回数に基づいて、慎重に設計された決定ツリーに従います。

トリビア:手紙Kがこのエントリまで使用されませんでした。文字I、E、Y、j、k、q、zは未使用のままです。


C ++言語の11を検討するためのオプションがあり、数バイトが収まるように残っていることインチ
Lyth

0

22. Bash(+ coreutils)[言語6]、 123、131バイト

編集:最初に間違ったバージョンを公開しましたが、今すぐ修正する必要があります。

ゴルフ

expr substr 6A67A69418476151514321 $(expr index i3xFepQsAalyIvtqPY7ZN+ \\`openssl sha256 -binary|base64|cut -c10`) 1| dc -e16i?p #L

私の答え#20、#17、#10と同じテクニック。

データ

6 22 expr substr 6A67A69418476151514321 $(expr index i3xFepQsAalyIvtqPY7ZN+ \\`openssl sha256 -binary|base64|cut -c10`) 1| dc -e16i?p #L
A 21 main(){int K,d[256]{0};while((K=getchar())!=EOF)d[K]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}
6 20 expr substr 67A69418476151514321 $(expr index 7042PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1| dc -e16i?p #u
7 19 Position[ToCharacterCode@StringSplit@";NRU$ Q B [1: =L J, 5% 3 # >",Mod[Length@#,59,33]][[1,1]]&
A 18 main(n){char*v=" ^{ s ePfwm",b[999],*c;gets(b);c=strchr(v,*b);n=strlen(b);printf("%d",n?c?c-v:n>99?4:n>60?5:n>15?1:3:1);}
6 17 expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
9 16 while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}
4 15 t=>({24:2,86:3,5:4,73:5,68:5,74:7,4:6,79:4,1:8,67:4})[[...t].reduce((r,c,i)=>r*i^c.charCodeAt(0),0)&0x5F]||1
1 14 '[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$
8 13 from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N
4 12 c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;
7 11 Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&
6 10 expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G
1 09 $|}\{|[:'][^]']|,\b1
5 08 c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)
1 07 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}|\b5
5 06 cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
1 05 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
4 04 s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
3 03 ' {'⍳⊃⍞
2 02 {<>(())(<>)}{}(<>{}())
1 01

試運転

./test
6=>6
A=>10
6=>6
7=>7
A=>10
6=>6
9=>9
4=>4
1=>1
8=>8
4=>4
7=>7
6=>6
1=>1
5=>5
1=>1
5=>5
1=>1
4=>4
3=>3
2=>2
1=>1

なに44
clismique

* 2 22󠀠󠀠󠀠󠀠󠀠?
Viに。

@ Qwerp-Derp、単なるタイプミス
zeppelin

さあ、あなたの答えは今退屈になっています-あなたの次の答えがこのようなものである場合、私はダウン投票を検討しています(面白くないですか?)
clismique

1
ここは何かがおかしい。ハッシュ化された文字には20エントリしかありません(3PgTなど)。空の入力に対してエラーが表示され、回答#2に対して「4」が表示されます(両方とも回答20で正常に機能しました。)
Nick Matteo

0

25. Bash(言語6)、169バイト

私の答え#22、#20、#17、#10と同じテクニック。

申し訳ありません@ Qwerp-Derp!;)これが最後のものであることを約束します:)

ゴルフ

{ echo -n 'addsomesalt?';cat; }|expr substr 6BA6A67A69418476151514321 $(expr index 1W0TC4YrKwRGAJupDqn7Xlcog \\`openssl sha256 -binary|base64|cut -c40`) 1| dc -e16i?p #8

データ

答え#24の場合、改行は\ nとしてエンコードされることに注意してください。

6 25 { echo -n 'addsomesalt?';cat; }|expr substr 6BA6A67A69418476151514321 $(expr index 1W0TC4YrKwRGAJupDqn7Xlcog \\`openssl sha256 -binary|base64|cut -c40`) 1| dc -e16i?p #8
B 24 typeset -A p\np=("[\$^]*|'\[*" 1 '{*' 2 "' *" 3 '?=>*' 4 'c?[wt]*' 5 'e*' 6 'P*' 7 'f*' 8 'w*' 9 'm*' 10 'ty*' 11)\necho ${p[(k)$1]:-1} #@<`w&X{
A 23 main(c){int d[256]={0};while((c=getchar())!=EOF)d[c]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}
6 22 expr substr 6A67A69418476151514321 $(expr index i3xFepQsAalyIvtqPY7ZN+ \\`openssl sha256 -binary|base64|cut -c10`) 1| dc -e16i?p #L
A 21 main(){int K,d[256]{0};while((K=getchar())!=EOF)d[K]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}
6 20 expr substr 67A69418476151514321 $(expr index 7042PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1| dc -e16i?p #u
7 19 Position[ToCharacterCode@StringSplit@";NRU$ Q B [1: =L J, 5% 3 # >",Mod[Length@#,59,33]][[1,1]]&
A 18 main(n){char*v=" ^{ s ePfwm",b[999],*c;gets(b);c=strchr(v,*b);n=strlen(b);printf("%d",n?c?c-v:n>99?4:n>60?5:n>15?1:3:1);}
6 17 expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
9 16 while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}
4 15 t=>({24:2,86:3,5:4,73:5,68:5,74:7,4:6,79:4,1:8,67:4})[[...t].reduce((r,c,i)=>r*i^c.charCodeAt(0),0)&0x5F]||1
1 14 '[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$
8 13 from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N
4 12 c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;
7 11 Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&
6 10 expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G
1 09 $|}\{|[:'][^]']|,\b1
5 08 c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)
1 07 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}|\b5
5 06 cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
1 05 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
4 04 s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
3 03 ' {'⍳⊃⍞
2 02 {<>(())(<>)}{}(<>{}())
1 01

テスト出力

6=>6
B=>11
A=>10
6=>6
A=>10
6=>6
7=>7
A=>10
6=>6
9=>9
4=>4
1=>1
8=>8
4=>4
7=>7
6=>6
1=>1
5=>5
1=>1
5=>5
1=>1
4=>4
3=>3
2=>2
1=>1
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.