9バイトで40個の数字


40

あります40個の方法有向ハミルトン経路は:3×3のグリッド上に配置することができる
3×3の20個の無向ハミルトニアンパスすべて。 グリッド
。このグラフィック(感謝SP3000! )のみを示している20本の無向パスが。40の有向パスについて、各色の線を両方向にトラバースします。

チャレンジ

印刷可能なASCIIのみを使用して、次のような文字の3×3グリッドを書き込みます。

ABC
DEF
GHI

40本の有向パスのそれぞれは、40シングルライン、9文字のプログラムとして、このグリッドから読み込まれると、目標は1から40までの各プログラムの出力に一意の整数値を持つことであるためにこれを行うすべての 40本のパスすることは難しいとは考えられません、そのため、できるだけ多くのパスで機​​能させる必要があります。

40のパスプログラムが1〜40の最も明確な数字を出力する提出物が勝者になります。Tiebreakerは以前の提出に進みます。

エラーが発生するか、1〜40の整数を出力しないパスプログラム、または別のパスプログラムが既にカバーしている整数を出力するパスプログラムはカウントされません。具体的には:

  • コンパイル、実行、または終了中にエラーが発生したプログラムはカウントされません。警告は大丈夫です。
  • 1から40の整数を出力しないプログラム、-35または35 36カウントされない、またはカウントされないようなわずかに不正なものを出力するプログラム。
  • 出力を生成するためにユーザー入力を必要とするプログラムはカウントされません。
  • 終わらないプログラムはカウントされません。
  • 今に、決定論的でないプログラムはカウントされません。
  • そうでない場合、別の有効なプログラムがすでに出力した1から40の整数を出力する有効なプログラムはカウントされません。(最初のプログラムカウントされます。)
  • 1〜40の整数の整数表現を出力するプログラムのみが合計にカウントされます。番号は、通常であると予想されている12、...、 3940それはあなたの言語のための規範ではない場合を除き、形式。(出力の末尾の改行は問題ありません。)
  • プログラムが出力する番号とその順序は関係ありません。有効なプログラムからの異なる整数の数のみが重要です。

すべてのパスプログラムは同じ言語で実行する必要があります。ただし、実際には、「プログラム」は、ターゲット整数を出力または返す完全なプログラムと同様に、関数(必要な引数なし)またはREPLコマンドである場合があります。関数、REPLコマンド、および完全なプログラムを組み合わせて使用​​できます。

9文字の印刷可能なASCII文字を区別する必要はありません。

3×3グリッドが

ABC
DEF
GHI

そして、あなたの40のプログラムと出力はこのように見えました

ABCFEDGHI -> 26
ABCFIHEDG -> 90
ABCFIHGDE -> 2
ABEDGHIFC -> syntax error
ADEBCFIHG -> prints 40 but then errors
ADGHEBCFI -> 6
ADGHIFCBE -> 6
ADGHIFEBC -> 6
CBADEFIHG -> runtime error
CBADGHEFI -> 3
CBADGHIFE -> 4
CFEBADGHI -> -32
CFIHEBADG -> 38.0
CFIHGDABE -> "36"
EDABCFIHG -> 33
EFCBADGHI -> no output
EHGDABCFI -> compilation error
EHIFCBADG -> 8
GDABCFEHI -> 22
GHEDABCFI -> 41
IHGDEFCBA -> 0
GDEHIFCBA -> '9'
EDGHIFCBA -> +10
CFIHGDEBA -> 11
GHIFCBEDA -> error
IFCBEHGDA -> error
EBCFIHGDA -> prints 23 but then loops infinitely
CBEFIHGDA -> randomly prints either 24 or 44
GHIFEDABC -> error
IFEHGDABC -> 30
EFIHGDABC -> 39
IHGDABEFC -> 7
GDABEHIFC -> 29
EBADGHIFC -> -1
GHIFCBADE -> 26
IHGDABCFE -> 1
IFCBADGHE -> error
GDABCFIHE -> no output
IHEFCBADG -> no output
IFCBADEHG -> "quack"

1から40までの14個の異なる整数が有効に出力されるため、スコアは14になります26 2 6 3 4 33 8 22 11 30 39 7 29 1


14
-1、チャレンジにフラグへの参照が含まれていない
アレックスA.

@ Sp3000画像内の配置は特定の順序ですか?(挑戦のために順序は重要ではないと思いますが、画像についての好奇心で死にかけています。特に、これらがヒルベルト空間曲線のLシステムでシードとして使用された場合、設定しますか?)
luser droog

@luserdroogまあ、Spは画像を作成しました。
カルビンの趣味

@luserdroogセルに1〜9の番号を付ける場合、それら辞書式順序である必要があります。たとえば、最初は123654789
Sp3000

@luserdroog(つまり、有向パスの各ペアの辞書式に古い代表を選択し、それらの20の代表を辞書式にソートします。)
mathmandan

回答:


27

パリ/ GP-24

1%1
 8
2+3

PARI / GPは数字間のスペースを無視するため1 8 2、たとえばとして扱われ182ます。スペースをアンダースコアに置き換えることで、perlでも同じことができます。サーチスペース全体を使い果たしていないので、より良い候補があるかもしれません。

プログラムはgp -q -f program.gp、としてgpに、またはreplでインタラクティブにフィードできます。


出力

1%1 8 2+3 -> 4
1%1 3+8 2 -> 83 # invalid
1%1 3+2 8 -> 29
1%8 2+3 1 -> 32
1 8%1 3+2 -> 7
1 2+8%1 3 -> 20
1 2+3 1%8 -> 19
1 2+3 8%1 -> 12
1%1 8 3+2 -> 3
1%1 2+8 3 -> 84 # invalid
1%1 2+3 8 -> 39
1 8%1 2+3 -> 9
1 3+8%1 2 -> 21
1 3+2 1%8 -> 18
8 1%1 3+2 -> 5
8 1%1 2+3 -> 12 # dup
8+2 1%1 3 -> 16
8+3 1%1 2 -> 15
2 1%1 8+3 -> 6
2+8 1%1 3 -> 5  # dup
3+2 8 1%1 -> 3  # dup
2 8+3 1%1 -> 28
8 2+3 1%1 -> 82 # invalid
1 3+2 8%1 -> 13
2+3 1%8 1 -> 33
3 1%8+2 1 -> 28 # dup
8%1 3+2 1 -> 29 # dup
1%8 3+2 1 -> 22
2+3 8 1%1 -> 2
3 8+2 1%1 -> 38
8 3+2 1%1 -> 83 # invalid
3+2 1%8 1 -> 24
2 1%8+3 1 -> 36
8%1 2+3 1 -> 39 # dup
2+3 1%1 8 -> 15 # dup
3+2 1%1 8 -> 6  # dup
3 1%1 2+8 -> 15 # dup
2 1%1 3+8 -> 16 # dup
3+8 1%1 2 -> 12 # dup
3 1%1 8+2 -> 15 # dup

4つの値を除くすべての値が必要な範囲内にあり、12のエントリが重複しています。


更新

私はクランチを終了しました。6つの異なる23があり、1つだけが24です(行ごとに読み取られます)。

23 1%1 6 2+3 [2, 3, 4, 5, 7, 8, 11, 12, 13, 14, 16, 17, 18, 19, 22, 24, 26, 27, 32, 33, 34, 36, 37]
23 1 2%3+2*8 [2, 5, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 22, 23, 25, 26, 29, 31, 32, 37, 40]
23 2 3%1+8 2 [2, 4, 6, 7, 10, 11, 12, 13, 14, 15, 16, 20, 21, 23, 24, 28, 29, 30, 31, 32, 33, 34, 40]
23 4%6%5*7+6 [2, 4, 5, 6, 7, 8, 9, 12, 13, 19, 21, 23, 24, 26, 29, 31, 32, 33, 34, 37, 38, 39, 40]
23 5%6%4*7+6 [2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 25, 26, 29, 31, 33, 34, 37, 38, 39, 40]
23 5%6%4*8+6 [1, 3, 5, 6, 8, 9, 10, 12, 14, 15, 18, 22, 24, 25, 27, 29, 30, 32, 34, 36, 37, 39, 40]

24 1%1 8 2+3 [2, 3, 4, 5, 6, 7, 9, 12, 13, 15, 16, 18, 19, 20, 21, 22, 24, 28, 29, 32, 33, 36, 38, 39]

クランチに使用したプログラムは次のとおりです。PARI / GPの文字列処理機能は限られているため、主にchar配列(別名Vecsmall)を扱います。試験オペレータは+-*\(床DIV) 、%;式分離装置、その前に本質的に破棄すべて)、及び(上述したように空間)。指数演算子^も追加できますが、徹底的にテストするには遅すぎます。

perms = {[
  [1, 2, 3, 6, 5, 4, 7, 8, 9], [1, 2, 3, 6, 9, 8, 5, 4, 7], [1, 2, 3, 6, 9, 8, 7, 4, 5], [1, 2, 5, 4, 7, 8, 9, 6, 3],
  [1, 4, 5, 2, 3, 6, 9, 8, 7], [1, 4, 7, 8, 5, 2, 3, 6, 9], [1, 4, 7, 8, 9, 6, 3, 2, 5], [1, 4, 7, 8, 9, 6, 5, 2, 3],
  [3, 2, 1, 4, 5, 6, 9, 8, 7], [3, 2, 1, 4, 7, 8, 5, 6, 9], [3, 2, 1, 4, 7, 8, 9, 6, 5], [3, 6, 5, 2, 1, 4, 7, 8, 9],
  [3, 6, 9, 8, 5, 2, 1, 4, 7], [3, 6, 9, 8, 7, 4, 1, 2, 5], [5, 4, 1, 2, 3, 6, 9, 8, 7], [5, 6, 3, 2, 1, 4, 7, 8, 9],
  [5, 8, 7, 4, 1, 2, 3, 6, 9], [5, 8, 9, 6, 3, 2, 1, 4, 7], [7, 4, 1, 2, 3, 6, 5, 8, 9], [7, 8, 5, 4, 1, 2, 3, 6, 9],
  [9, 8, 7, 4, 5, 6, 3, 2, 1], [7, 4, 5, 8, 9, 6, 3, 2, 1], [5, 4, 7, 8, 9, 6, 3, 2, 1], [3, 6, 9, 8, 7, 4, 5, 2, 1],
  [7, 8, 9, 6, 3, 2, 5, 4, 1], [9, 6, 3, 2, 5, 8, 7, 4, 1], [5, 2, 3, 6, 9, 8, 7, 4, 1], [3, 2, 5, 6, 9, 8, 7, 4, 1],
  [7, 8, 9, 6, 5, 4, 1, 2, 3], [9, 6, 5, 8, 7, 4, 1, 2, 3], [5, 6, 9, 8, 7, 4, 1, 2, 3], [9, 8, 7, 4, 1, 2, 5, 6, 3],
  [7, 4, 1, 2, 5, 8, 9, 6, 3], [5, 2, 1, 4, 7, 8, 9, 6, 3], [7, 8, 9, 6, 3, 2, 1, 4, 5], [9, 8, 7, 4, 1, 2, 3, 6, 5],
  [9, 6, 3, 2, 1, 4, 7, 8, 5], [7, 4, 1, 2, 3, 6, 9, 8, 5], [9, 8, 5, 6, 3, 2, 1, 4, 7], [9, 6, 3, 2, 1, 4, 5, 8, 7]
]}

ops = Vecsmall("+-*\\%; ")

ms = 1

for(c = 48, 57, {
 for(d = c, 57,
  for(f = d, 57,
   for(g = c, 57,
    for(e = 48, 57,
     print1(Strchr([c,d,e,f,g,13]));
     for(h = 1, #ops,
      for(i = 1, #ops,
       for(j = 1, #ops,
        for(k = 1, #ops,
         a = Vecsmall([c, ops[h], d, ops[i], e, ops[j], f, ops[k], g]);
         s = Set();
         for(m = 1, #perms,
          v = Strchr(vecextract(a, perms[m]));
          iferr(b = eval(v), E, b = 0);
          if(b >= 1 && b <= 40, s = setunion(s, [b]))
         );
         if(#s >= ms, ms = min(23, #s); print(#s, " ", Strchr(a), " ", s));
        )
       )
      )
     )
    )
   )
  )
 )
})

悲しいかな、Perlプログラムは最後の値を出力しません。Perlサブルーチンにはありますが、サブルーチンには中括弧があります。(「署名はサブルーチンの本体の一部です。通常、サブルーチンの本体は単純にブレースされたコードブロックです。」)したがって、Perlでこれを実行できるとは思いません。
msh210

29

デッドフィッシュ、18

実際、これは中置演算子を考える前に試した最初の言語でした。Deadfishは何かに役立つ可能性があるというアイデアの純粋な喜びのために、私は今それを投稿しています。

iii
ios
sii

Deadfishを知らない人のために、i増分でsあり、平方でありo、0から始まるアキュムレータで出力されます(dここでは使用されない減分のための4番目の命令もあります)。自動印刷機能がなく、使用する必要があるという事実oは大きな欠点ですが、驚くべきことにDeadfishはここではそれほどひどくはしません。出力演算子の最適な配置は中央にあることがわかります。

iiisoisii 9
iiisiiois 11
iiisiisio 122
iioisiisi 2
iioiisiis 2
iisioiisi 5
iisiisiio 38
iisiisoii 36
iiiiosiis 4
iiiisiosi 17
iiiisiiso 324
isoiiisii 1
isiioiiis 3
isiisiiio 12
oiiiisiis 0
osiiiisii 0
oisiiiisi 0
oiisiiiis 0
siiiisoii 16
sioiiiisi 1
iisiosiii 5
sioiisiii 1
oisiisiii 0
isiisioii 10
siisiioii 6
isiioisii 3
oiisiisii 0
iiosiisii 2
siisoiiii 4
isoisiiii 1
osiisiiii 0
iisiiiosi 7
siiioiisi 3
oiiisiisi 0
siisiiiio 8
iisiiiiso 64
isiiiisio 26
siiiisiio 18
iiosiiiis 2
isiiiiois 5

25

Python REPLなど、22 23

6+7
*5%
6%4

重要な観察:グリッドをチェッカーボードのように色付けすると、パスはグリッドの色を交互に切り替え、同じ色で開始および終了します。

まだまだ強引な方が良い。試してみました+*%(そして、累乗法**である言語の場合でも^)、残念ながら良い結果は得られませんでした。また、ビット単位の演算子をスローしようとしましたが、^(xor)だけが少し助けになるように見えましたが、検索に時間がかかりすぎたため、givenめました。

6+7%5*6%4 6
6+7%4%5*6 24
6+7%4%6*5 21
6+5*6%4%7 8
6*5+7%4%6 33
6*6%5+7%4 4
6*6%4%7+5 5
6*6%4%5+7 7
7+6*5%4%6 9
7+6*6%5%4 8
7+6*6%4%5 7
7%5+6*6%4 2
7%4%5+6*6 39
7%4%6*6+5 23
5*6+7%4%6 33
5%7+6*6%4 5
5%6*6+7%4 33
5%4%7+6*6 37
6*6+7%5%4 38
6%5*6+7%4 9
4%6*5%7+6 12
6*5%4%7+6 8
5*6%4%7+6 8
7%4%6*5+6 21
6%4%7+5*6 32
4%7+5%6*6 34
5+7%4%6*6 23
7+5%4%6*6 13
6%4%5*6+7 19
4%5%6*6+7 31
5%4%6*6+7 13
4%6*6+5%7 29
6*6+5%4%7 37
5+6*6%4%7 5
6%4%7+6*5 32
4%6*6+7%5 26
4%7+6*6%5 5
6*6+7%4%5 39
4%5%7+6*6 40
4%7+6*5%6 4

5
次のタスク:最も一意の値を持つプログラムを生成するプログラムを作成します。その後、そのプログラムをゴルフ。:)
レトコラディ

@RetoKoradi最初の部分は私がやったことです。2番目...後で:P
Sp3000

@ Sp3000このスタイルのソリューションの総当たり攻撃を終了しました。あります6+7*5%6%46+7*4%6%5そして6+8*4%6%5、何もない(右、上から下へ左から)。
isaacg

1
@isaacg && ^^などの演算子を追加すると、さらに23ポイントのソリューションがあります
-Sparr

ただ、ランダムな思考:あなたができるようにしようとしている+-コーナー/センターに?これらは単項演算子でも二項演算子でもあるため、それでもすべての有効な式になります。より良い解決策となる可能性は低いですが、少なくとも検索スペースを拡大します。うーん、実際には、一連の演算子で終わる可能性があるため、問題になる可能性があります。
レトコラディ

13

J、15

2 + 1
* 3 *
2 + 3

これは有効な数値のみを出力しますが、多くは重複しています。一意の値は17 11 16 28 31 23 13 10 21 33 18 24 22 29 27です。演算子と関連する整数を変更することにより、間違いなくより良い結果を得ることができます。

2+1*3*2+3 -> 17
2+1*3+3*2 -> 11
2+1*3+2*3 -> 11
2+3*2+3*1 -> 17
2*3+1*3+2 -> 16
2*2+3+1*3 -> 16
2*2+3*1+3 -> 28
2*2+3*3+1 -> 28
1+2*3*3+2 -> 31
1+2*2+3*3 -> 23
1+2*2+3*3 -> 23
1*3+2*2+3 -> 13
1*3+3+2*2 -> 10
1*3+2*2+3 -> 13
3*2+1*3+2 -> 21
3*1+2*2+3 -> 33
3+2*2+1*3 -> 13
3+3*1+2*2 -> 18
2*2+1*3+3 -> 16
2+3*2+1*3 -> 17
3+2*3*1+2 -> 21
2*3+3*1+2 -> 24
3*2+3*1+2 -> 33
1*3+2*3+2 -> 13
2+3*1+3*2 -> 23
3*1+3+2*2 -> 24
3+1*3+2*2 -> 10
1+3*3+2*2 -> 22
2+3*3*2+1 -> 29
3*3+2*2+1 -> 27
3*3+2*2+1 -> 27
3+2*2+3*1 -> 13
2*2+3+3*1 -> 16
3+2*2+3*1 -> 13
2+3*1+2*3 -> 23
3+2*2+1*3 -> 13
3*1+2*2+3 -> 33
2*2+1*3+3 -> 16
3+3*1+2*2 -> 18
3*1+2*3+2 -> 33

ちなみに、1k担当者におめでとうございます!:)
アレックスA.

@AlexA。Jの回答で1kを押すと、Prolog以外の回答はありません。不誠実な...
15

8
大丈夫です、Prologが理解するはずです。
アレックスA.

3
@AlexA。Yes
ジョン・ドヴォルザーク

@JanDvorakプロローグを代表して話していますか?
アレックスA.

11

> <>、36 *

運がよければ!

x;x
lxl
xnx

チャレンジではコードが決定論的である必要はないため、36の数値を返すことが(たとえあり得ないとしても)可能であることを証明するだけで十分です。それは私が推測し続ける間、それは良かった。

(> <>に慣れていない人のために、ここで素晴らしい紹介を見つけることができます

> <>はスタックベースの2D言語です。これは、命令がほとんどの従来の言語のように直線的に実行されないことを意味します。プログラムフローは上下左右になります。

> <>で "x"命令を使用することにしました。これにより、命令ポインタの方向がランダムに上、下、左、または右に変わります。コードは1行のみであるため、ポインターが上下に移動すると「x」命令を再度ヒットするため、右または左に移動した場合にのみケースを確認できます。

「n」命令は、スタックの一番上にある番号をポップし、印刷します。ただし、スタックが空でポップするものがない場合、エラーが発生します。

「l」命令は、単にスタックの長さをスタックにプッシュします(そして、スタックが空の場合はエラーを送信しません)。たとえば、スタックが空で「l」が呼び出された場合、 0をスタックにプッシュします。もう一度「l」を呼び出すと、スタックには1つの要素(0)があるため、スタックの最上部に1がプッシュされ、スタックに2つの要素が存在することになります。もう一度「l」を呼び出すと、スタックなどに2をプッシュします。したがって、「l」を使用して、前述の方法で任意の数をスタックにプッシュできます。

「;」命令はプログラムを終了します。

「x」を使用するアイデアは、たとえば、コードに「x」が1つしかない場合(A、B、C、Dはいくつかの命令です):

ABCx;D

プログラムはA、B、Cの順に実行し、「x」に達すると2つの可能性があります。コードは引き続き正しく実行され、「;」にヒットします 終了するか、左に移動してC、B、A、Dの順に実行してから終了します。したがって、コードに「x」が1つ含まれている場合、プログラムは2つの可能なプログラムフローを取得し、そこから最適なプログラムを選択できます。

2つ以上の「x」がある場合、無限の数の可能なプログラムフローが得られます。

コードには5つの「x」があり、さらにそれぞれがハミルトニアンパスの「開始セル」にあります。つまり、すべてのプログラムは「x」で始まり、すべてのプログラムは次の構造を持ちます。

xAxBxCxDx

A、B、C、Dは{に属します。、n、l、l}これは、一意のプログラムが12個しかないことを意味します。さらに、常に「x」から開始するため、プログラムが去る場合を見るかもしれません。したがって、対称プログラムも同じと見なすことができます。対称性までは、可能なプログラムは6つしかありません。ハミルトニアンパスとして生成されたプログラムでは、そのうちの4つのみが発生します。

xnxlxlx;x
xlxnxlx;x
xnxlx;xlx
xlxnx;xlx

スタックに何もないので、エラーを発生させる印刷コマンドを最初のステップで実行すると、最初のプログラム「xnxlxlx; x」を見てみましょう。左に行くと、プログラムの終了コマンドを押します。したがって、これらのプログラムから数字出力することできません

2番目のプログラム「xlxnxlx; x」は、希望に満ちたものです。開始時に右に移動すると、スタックにゼロが置かれ、次の「x」で左に移動すると、スタックが1つ増え、すぐに2が表示され、印刷してプログラムを終了するためにそのまま続行できます。実際には偶数を印刷できることがわかります。最初の「xlx」の部分では、右に移動してから左に移動し、特定の回数だけ右に移動することで、任意のサイズに達することができます。

同様に、3番目のプログラムxnxlx; xlxは任意の奇数を出力できることがわかります。先頭を左に移動し、「xlx」ルーチンを今回だけ左、右、左の順に繰り返します。

そして、4番目のプログラムは2番目のプログラムと本質的に同じで、任意の偶数を出力できます。

したがって、必要なプログラムについては次のとおりです。

x;xlxlxnx (none)
x;xlxnxlx (any even number)
x;xlxnxlx (any even number)
x;xlxnxlx (any even number)
xlx;xlxnx (any odd number)
xlxnx;xlx (any even number)
xlxnxlx;x (any even number)
xlxnxlx;x (any even number)
x;xlxlxnx (none)
x;xlxnxlx (any even number)
x;xlxnxlx (any even number)
xlx;xlxnx (any odd number)
xlxnx;xlx (any even number)
xlxnxlx;x (any even number)
xlx;xlxnx (any odd number)
xlx;xlxnx (any odd number)
xnxlx;xlx (any odd number)
xnxlx;xlx (any odd number)
xlx;xlxnx (any odd number)
xnxlx;xlx (any odd number)
xnxlxlx;x (none)
xlxnxlx;x (any even number)
xlxnxlx;x (any even number)
xlxnxlx;x (any even number)
xnxlx;xlx (any odd number)
xlx;xnxlx (any even number)
x;xlxnxlx (any even number)
x;xlxnxlx (any even number)
xnxlxlx;x (none)
xlxnxlx;x (any even number)
xlxnxlx;x (any even number)
xnxlx;xlx (any odd number)
xlx;xnxlx (any even number)
x;xlxnxlx (any even number)
xnxlx;xlx (any odd number)
xnxlx;xlx (any odd number)
xlx;xlxnx (any odd number)
xlx;xlxnx (any odd number)
xnxlx;xlx (any odd number)
xlx;xlxnx (any odd number)

つまり、数字を出力できないプログラムは4つ、偶数を出力できるプログラムは20、奇数を出力できるプログラムは16です。1〜40の範囲にちょうど20の偶数と少なくとも16の奇数があるため、一定の確率で、このコードブロックによって出力される1〜40の範囲に36の異なる数が存在する可能性があります。


11
36は、事実上抜け穴の乱用である回答に対して非常に最適ではないと感じています
Sp3000

時々、魚が「スタックに最後のものを印刷して終了する」という指示があればいいのにと思う。私はすぐに完全に最適な抜け穴の答えがあるかもしれません
-cirpis

私は、非決定的なプログラムをカウントしないというルールを追加するのを正直に忘れていました。今追加しました。これは賢明で説明が行き届いているので、歓迎しますが、私はこの答えを受け入れません。
カルバンの趣味

1
確かに、この回答は競合する回答であることを意図したものではありませんでした。この課題を読んで魚の回答があると思ったとき、それはひどい反応でした。
-cirpis

9

GolfScript、8

192
6#7
281

現在、最高のスコアリングソリューションです。:Pそれが続いている間は良かった。

プログラム

1927#6281 1927
192718#62 192718
19271826# 19271826
19#628172 19
16#927182 16
1628#9271 1628
16281729# 16281729
162817#92 162817
2916#7182 2916
291628#71 291628
29162817# 29162817
27#916281 27
2718#9162 2718
27182619# 27182619
#61927182 
#72916281 
#82619271 
#81729162 
261927#81 261927
28#619271 28
1826#7291 1826
26#817291 26
#62817291 
271826#91 271826
281729#61 281729
1729#8261 1729
#92718261 
29#718261 29
2817#6192 2817
17#826192 17
#71826192 
182619#72 182619
2619#8172 2619
#91628172 
28172916# 28172916
18261927# 18261927
17291628# 17291628
26192718# 26192718
18#729162 18
172916#82 172916

1
30分間続き
オプティマイザー

2
GolfScriptで見つけることができる最高のものは0)1#2#3(415です。美しい対称性もあります。
primo

1
@primo:それは賢い。これ以上のコメントが実際にスコアを改善するとは思わなかった。
デニス

8

CJam、14

3(4
;];
0)1

作業プログラムの下:

3(4;];0)1 = 11
3(4;1)0;] = 22
3(];0)1;4 = 14
3;0)](4;1 = 11
3;0)1;4(] = 13
3;0)1;](4 = 14
4(3;];1)0 = 20
4(3;0)];1 = 1
4(3;0)1;] = 31
4;1)](3;0 = 20
4;1)0;3(] = 22
0;3(4;])1 = 21
0)];3(4;1 = 21
1)0;];4(3 = 33
4;1)0;](3 = 23
0)1;4(];3 = 3
1;4(])0;3 = 33
4(];1)0;3 = 23
0)1;];3(4 = 24
1)0;3(];4 = 4
0;3(])1;4 = 24
0)1;4(3;] = 13
1)0;3(4;] = 22
1;4(3;0)] = 31
0;3(4;1)] = 22
1)];4(3;0 = 30
1;4(3;])0 = 30

生成される値は次のとおりです。[1、3、4、11、13、14、20、21、22、23、24、30、31、33]


このコードは手動で作成したものですか?または、コードのバリエーションを体系的に列挙して評価しましたか?私は、中置記法の言語がこれに本質的に優れているのか、それとも@ Sp3000のアプローチをスタックベースのゴルフ言語で打ち負かすことができるのか疑問に思っていました。
レトコラディ

@Reto私は、4つの数値パラメーターのすべての値0..9を試すプログラムを作成しました。また、いくつかの演算子を手動で変更しようとしました。スタックベースの言語の問題は、ほとんどのオペレーターがスタック上に2つのパラメーターを必要とするため、多くのエラーが発生することです。中置言語は、Sp3000の投稿で説明されているチェッカー構造の恩恵を受けます。
アルノー

はい、基本的なアプローチを見たとき、まさにそれが私の気持ちでした。すべての有効な式を生成することが保証されている単純なレイアウトは、大きな利点です。CJamの唯一の利点は、1文字の演算子がはるかに多いことです。
レトコラディ

5

dc(20)

2+3
*p+
4+5
ABCFEDGHI -> 2+3+p*4+5 -> 5     $ **
ABCFIHEDG -> 2+3+5+p*4 -> 10    $ **
ABCFIHGDE -> 2+3+5+4*p -> 40    $ **
ABEDGHIFC -> 2+p*4+5+3 -> 2     $ **
ADEBCFIHG -> 2*p+3+5+4 -> 2       **
ADGHEBCFI -> 2*4+p+3+5 -> 6     $ **
ADGHIFCBE -> 2*4+5+3+p -> 14    $ **
ADGHIFEBC -> 2*4+5+p+3 -> 11    $ **
CBADEFIHG -> 3+2*p+5+4 -> 6       **
CBADGHEFI -> 3+2*4+p+5 -> 10      **
CBADGHIFE -> 3+2*4+5+p -> 15    $ **
CFEBADGHI -> 3+p+2*4+5 -> 3     $ **
CFIHEBADG -> 3+5+p+2*4 -> 8     $ **
CFIHGDABE -> 3+5+4*2+p -> 34    $ **
EDABCFIHG -> p*2+3+5+4 -> 
EFCBADGHI -> p+3+2*4+5 -> 
EHGDABCFI -> p+4*2+3+5 -> 
EHIFCBADG -> p+5+3+2*4 -> 
GDABCFEHI -> 4*2+3+p+5 -> 9     $ **
GHEDABCFI -> 4+p*2+3+5 -> 4     $ **
IHGDEFCBA -> 5+4*p+3+2 -> 20    $ **
GDEHIFCBA -> 4*p+5+3+2 -> 4       **
EDGHIFCBA -> p*4+5+3+2 -> 
CFIHGDEBA -> 3+5+4*p+2 -> 32    $ **
GHIFCBEDA -> 4+5+3+p*2 -> 12    $ **
IFCBEHGDA -> 5+3+p+4*2 -> 8       **
EBCFIHGDA -> p+3+5+4*2 -> 
CBEFIHGDA -> 3+p+5+4*2 -> 3       **
GHIFEDABC -> 4+5+p*2+3 -> 9       **
IFEHGDABC -> 5+p+4*2+3 -> 5       **
EFIHGDABC -> p+5+4*2+3 -> 
IHGDABEFC -> 5+4*2+p+3 -> 22    $ **
GDABEHIFC -> 4*2+p+5+3 -> 6       **
EBADGHIFC -> p+2*4+5+3 -> 
GHIFCBADE -> 4+5+3+2*p -> 24    $ **
IHGDABCFE -> 5+4*2+3+p -> 25    $ **
IFCBADGHE -> 5+3+2*4+p -> 20      **
GDABCFIHE -> 4*2+3+5+p -> 14      **
IHEFCBADG -> 5+p+3+2*4 -> 5       **
IFCBADEHG -> 5+3+2*p+4 -> 16    $ **

32の出力、20の異なる出力(でマーク$

2、3、4、5、6、8、9、10、11、12、14、15、16、20、22、24、25、32、34、40

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