数値、合計、製品


9

負でない整数の20×20グリッドが与えられた場合、個々のラインの合計の積が最大に達する3×3サブグリッドを見つけます。数式で話されています:

3×3のサブグリッドが与えられた

(1,1)から(3,3)までの行列

最大化する関数は

f(A)=(x_11 + x_12 + x_13)⋅(x_21 + x_22 + x_23)⋅(x_31 + x_32 + x_33)

ラインごとに合計が計算され、個々の合計が乗算されます。

例(5×5のみ):

最大3×3グリッドが強調表示された例

赤で強調表示された部分は、関数の値がf(A)グリッド全体で最大の部分 です。

(35 + 272 + 167)⋅(163 + 270 + 242)⋅(216 + 68 + 266)= 175972500

入力

入力は標準入力で行われ、20文字からなる20行で構成され、スペース文字(U + 0020)で区切られます。数値は小さいので、32ビットの符号付き整数で結果を計算できます。

入力はファイルからリダイレクトされると想定できます。

出力

出力は、f(A)最大の結果が得られる3×3サブグリッドの関数の結果です。上記の例では、これはそう 175972500でした。

入力例1

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 5 5 5 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 5 5 5 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 5 5 5 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

出力例1

3375

入力例2

40 30 42 222 74 265 93 209 115 274 139 177 7 274 12 15 103 36 236 91
294 97 35 272 167 126 18 262 292 48 8 296 85 93 245 4 4 240 276 153
52 8 163 270 242 224 142 72 99 240 199 26 224 198 96 242 295 70 56 247
247 130 216 68 266 142 93 214 30 8 12 163 59 84 40 287 233 65 30 242
283 245 164 53 148 282 73 186 296 3 9 233 184 30 205 221 92 96 5 101
132 228 43 91 228 37 266 140 159 109 10 230 40 114 264 3 266 164 219 283
70 207 218 28 299 78 279 30 179 118 196 138 61 229 110 55 203 73 124 112
16 232 28 187 292 78 194 70 65 203 255 227 176 21 32 225 11 15 92 151
58 237 261 41 213 171 170 111 4 209 99 194 40 108 267 137 179 31 35 221
184 209 264 275 163 268 261 40 198 185 45 188 280 273 54 79 270 286 273 121
208 83 66 156 104 62 188 68 53 194 46 279 280 170 266 148 272 285 178 245
210 130 213 118 165 210 213 66 54 189 166 193 57 213 14 101 143 109 172 101
80 193 287 4 140 65 208 111 8 206 107 285 109 29 211 78 170 247 290 193
148 123 15 164 28 153 222 67 156 165 6 163 114 77 165 17 143 209 278 100
3 102 58 148 82 181 84 29 2 236 231 195 118 278 252 257 179 123 276 287
143 141 254 142 200 243 171 32 164 195 235 260 269 191 190 46 65 166 82 146
69 194 65 220 234 110 45 135 125 208 138 20 233 291 256 162 148 216 247 138
10 53 164 107 2 270 226 227 88 206 193 13 41 130 218 249 76 35 207 91
199 36 207 256 58 215 28 277 234 29 198 148 219 244 136 16 30 258 219 264
183 118 48 218 15 125 279 103 73 8 86 113 9 157 239 273 146 208 50 86

出力例2

328536000

入力例3

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

出力例3

185193

入力例4

242 248 292 60 9 45 94 97 294 202 219 118 115 243 207 81 288 289 241 232
236 225 205 227 242 85 139 63 5 162 170 121 208 133 22 235 125 288 209 270
31 182 108 170 88 268 297 66 249 158 285 157 267 117 150 18 44 66 117 223
205 32 93 132 33 99 209 282 222 272 255 1 80 270 202 54 117 35 139 273
87 74 113 146 177 14 154 92 282 4 192 60 171 286 66 299 89 276 138 289
60 16 143 277 202 284 77 296 215 96 200 10 226 143 136 131 218 246 254 20
244 118 299 218 81 195 129 93 205 202 264 141 196 150 214 72 231 136 243 192
236 157 176 187 104 182 134 29 151 234 81 143 22 119 45 241 17 225 197 7
156 284 92 13 131 60 113 77 228 65 200 83 3 63 83 88 241 113 115 198
62 101 242 270 121 122 119 78 105 273 55 7 239 236 37 252 66 164 56 44
70 57 100 87 34 298 140 259 36 257 1 204 110 299 245 56 43 121 192 10
240 36 272 255 10 194 143 66 27 131 22 78 57 71 128 5 1 155 236 122
281 160 42 147 272 151 196 240 291 280 209 245 271 46 103 35 85 145 78 140
155 74 232 205 235 223 147 39 171 240 56 187 184 70 28 81 293 125 283 159
297 203 75 46 221 77 106 12 268 94 220 156 78 97 266 208 228 137 212 49
4 157 69 51 225 23 61 202 19 23 41 260 161 218 142 251 299 187 283 158
118 136 71 77 21 199 110 87 103 120 153 157 213 234 155 141 135 24 120 199
16 204 292 245 54 260 294 159 254 15 209 41 154 54 231 167 87 291 31 26
212 274 99 199 170 184 47 227 64 2 117 275 67 84 143 214 143 125 24 61
205 250 133 88 210 112 4 160 3 287 54 143 293 94 287 42 105 94 76 169

出力例4

311042813

興味のある方のために、コンテストに提出した提出の長さ:

120 – AWK
124 – C
133 – Haskell
174 – C
270 – VB.NET

そして私たち自身の(ランク付けされていない)ソリューション:

  55 – Golfscript
118 – Ruby
192 – PowerShell

回答:


5

J、38

":@(>./@,@(3*/\3+/\"1".;._2))&.stdin''

使用例:

$ jconsole nsp.ijs <g1
3375
$ jconsole nsp.ijs <g2
328536000
$ jconsole nsp.ijs <g3
185193

大まかな説明:

  • ".;._2生の入力を行列に":変換し、結果を生の出力に変換します
  • 3+/\"1 列ごとの合計、3 x 3
  • 3*/\ 行ごとに乗算、3 x 3
  • , 結果を平坦化する
  • >./ 最大を抽出します
  • &.stdin'' それからフィルターを作ります

3
涼しい__________!
YOU

素晴らしいJゴルフ!
Eelvex 2011年

@ S.Mark __________!
Mateen Ulhaq、2011年

6

Python-146文字

g=[map(int,raw_input().split(' '))for i in' '*20]
r=range(18)
print max(reduce(int.__mul__,[sum(v[j:j+3])for v in g[i:i+3]])for j in r for i in r)

splitの引数は不要で、3バイト節約できます。入力を読み取るさらに短い方法があるg=eval('map(int,raw_input().split()),'*20)139の合計のために別の4バイトを保存し、
hallvabo

3

C#、324 321 308文字

using System;using System.Linq;class X{static void Main(){int m=0,v,x=0,y;Func<int[],int>f=t=>t[x]+t[x+1]+t[x+2];var a=Console.In.ReadToEnd().Trim().Split('\n').Select(l=>l.Split(' ').Select(int.Parse).ToArray()).ToList();for(;x<18;x++)for(y=0;y<18;m=m>v?m:v)v=f(a[y])*f(a[++y])*f(a[y+1]);Console.Write(m);}}

読みやすい:

using System;
using System.Linq;
class X
{
    static void Main()
    {
        int m = 0, v, x = 0, y;
        Func<int[], int> f = t => t[x] + t[x + 1] + t[x + 2];
        var a = Console.In.ReadToEnd().Trim().Split('\n').Select(l =>
            l.Split(' ').Select(int.Parse).ToArray()).ToList();
        for (; x < 18; x++)
            for (y = 0; y < 18; m = m > v ? m : v)
                v = f(a[y]) * f(a[++y]) * f(a[y + 1]);
        Console.Write(m);
    }
}

.Trim()入力が\n(no \r)のみを使用し、最後の行の数字の後に改行がないことを保証できる場合は、両方の呼び出しを削除することで、14文字を削ることができます。

編集

  • (333→324文字)ステートメントでx, yそれぞれを宣言する代わりに、上部の宣言に追加できることに気付きましたfor。私は、変更される可能性があること1ToArrayToListyへの呼び出し内でインクリメントfできるため、でそれを取り除くことができますfor

  • (324→321文字)への割り当てを移動mforセミコロンと2つのカーリーを取り払う、声明。

  • (321→308文字)コメントでのJoeyの提案。ありがとう!


codegolfingに完全に不適切なテクノロジーを使用するために-1に誘惑されます... :)
RomanSt

Trim()int.Parse呼び出しは確か(それが空白を末尾無視)(314)を滴下することができます。あなたは、その後も呼び出すことができるSelectだけでint.Parse引数として。ラムダはもう必要ありません(308)。今あるように配列のリストの代わりに400アイテムの1D配列で作業することでこれを短くできると思いますが、今はそれを適応できません;-)
Joey

@ジョーイ:うわー...あなたは私にnoobを感じさせます:)ありがとう!
ティムウィ

3

Java、299文字

    class M{public static void main(String[]a){java.util.Scanner s=new java.util.Scanner(System.in);int i,j,k,p,m,t=20,x[][]=new int[t][t];for(i=m=0;i<t*t;i++)x[i/t][i%t]=s.nextInt();for(i=0;i<18;i++)for(j=0;j<18;j++,m=p>m?p:m)for(p=1,k=i;k<i+3;k++)p*=x[k][j]+x[k][j+1]+x[k][j+2];System.out.print(m);}}

私は何か間違ったことをしていますか?ここでは、指定されたコードの重量は318バイトです。いずれの場合でも、クラスはである必要はありません。publicの配列宣言をx前の行にプルできますx[][]=new int[t][t]。アクセスを大幅に簡略化する1次元配列を使用できます。を削除してimportjava.util.2回インライン化するだけで、5バイト短くなります。インライン化しeて、3バイトを節約できます。以上のことで、290バイトになりました。
ジョーイ

@Joey、申し訳ありませんが、Notepad ++を使用していたため、誤って読みましたChar Count (no spaces)。それらの変更のほとんどを行います。1D配列を使用すると、コードが大幅に変更されます。
st0le

さて、宣言をにx[]=new int[t*t]、初期化をにx[i]=s.nextInt();、そしてをに更新pp*=x[t*k+j]+x[t*k+j+1]+x[t*k+j+2];ます。魔法のようなものはないと思います:-)
Joey

enum M{M;{code;}}、そしておそらくインクリメントとループの条件をマージすることができます。
Nabb

class M{static{java.util.Scanner s=...あなたは271に来ます。改善10%。:)出力後にエラーメッセージが表示されますが、黙って無視してもかまいません。:)
ユーザー不明

2

パイソン(202)

import sys; g = map(lambda l:map(int、l.split())、sys.stdin.readlines())
r =範囲(18)
範囲内のjの場合(20):l = g [j]; g [j] = [sum(l [i:i + 3])for iの場合r]
g = [g [i] [j] * g [i + 1] [j] * g [i + 2] [j] for i in r for j in r]
max(g)を印刷する

編集: rが17ではなくrange(18)になるように修正しました。


2

Ruby-78文字

g=*$<
p (0..324).map{|i|eval g[i/18,3].map{|r|eval r.split[i%18,3]*?+}*?*}.max

2

ルビー、106文字

k=$<.read.split.map &:to_i;p (0..358).map{|a|a%20>17?0:(0..2).map{|i|k[20*i+a,3].inject:+}.inject(:*)}.max

さらに別の簡単な解決策。

  • 編集:以前のソリューションでは、一部のエッジケースで誤った結果が生成されました。
  • 編集:(114-> 106)フラット配列を使用index%20し、次の行へのオーバーフローを防止するためにチェックします。

2

Windows PowerShell、116 117 124 152 170

$g=-split$input
(0..359|?{$_%20-le17}|%{$i=$_
(0..2|%{$g[($a=$i+20*$_)..($a+2)]-join'+'|iex})-join'*'|iex}|sort)[-1]

実際、かなり簡単です。


2

C 184 171文字

#define f(i,b)for(i=0;i<b;i++)
i,j,k,l,m,M,s,a[400];main(){f(i,400)scanf("%d",a+i);f(i,18)f(j,18){m=1;f(k,3){s=0;f(l,3)s+=a[(i+k)*20+j+l];m*=s;}M=m>M?m:M;}printf("%d",M);}

呼び出しを使用#define f(i,b)for(i=0;i<b;i++)して削除することにより、さらに数文字を絞り出すことができ0,ます。
ジョーイアダムス

@ジョーイ・オー・ヤ!私はそれを完全に逃した。ありがとう
fR0DDY

#define f(i,b)for(i=b;--i;)代わりに使用できますか?
Nabb

1

J + tr、84 + 10

y=:20 20$".(1!:1)3
s=:3 :'(y&((][;.0~3 3,:~[)~))"1(,."0/~i.18)'
>./,([:*/+/"1)"2 s y

この< golfdata tr \\n ' '| ./test.ijsように実行されるので、そのtr \\n ' '部分をプログラムの一部と見なします。

y=: 40 30 43 ...
>./,([:*/+/"1)"2 s y
328536000

z =: 20 20 $>:i.20
>./,([:*/+/"1)"2 s z
185193

Jアンサーを実行する最も簡単な方法は何ですか?
ニブラー

@gnibbler:私は(残念ながら)知っている唯一の方法があるにダウンロードしてインストール J.
Eelvex

@gnibbler ...これはオープンソースです。わーい。
JB

1

Haskell、129文字

import List
t f z@(_:y@(_:x))=zipWith3((f.).f)z y x
main=interact$show.maximum.(t(*)=<<).transpose.map(t(+).map read.words).lines

1

Golfscript、48文字

n%"{~}%:^,,{^>3<}%":|~{{+}*}%20/zip|~{{*}*}%$)p;

前回のもの

n%{' '%"{~}%:^,,{^>3<}%":|~{{+}*}%}%zip|~{{*}*}%$)p;

いくつかの説明がありますが、私はまだゴルフスクリプトの初心者です。いくつかは正しくない可能性があります。何か問題があった場合は訂正してください。

n%#。行
{#.each
   ' '% #。スプリット ' '
   "#" ...リテラル文字列の開始
      {〜}%#.flatten
      :^#変数に割り当てる^
      、#。size
      、#。times
      {#.each
         ^>#^ [n:]
         3 <#[:3]
      }%#.map end
   "#..."リテラル文字列の終わり
   :| #リテラル文字列を変数に割り当てる| 後で再利用する
   〜#eval
   {#.each
      {+}#合計
      *#.fold
   }%#.map end
}%#.map end
zip#.zip
|〜#評価変数| .zipの結果に対して
{#.each
   {*} #製品
   *#.fold
}%#.map end
$#.sort
)#uncons / .pop
p #puts
; #スタックから一番上のアイテムを破棄

テスト

$ cat sample-1159-1.txt | golfscript codegolf-1159.gs
3375

$ cat sample-1159-2.txt | golfscript codegolf-1159.gs
328536000

$ cat sample-1159-3.txt | golfscript codegolf-1159.gs
185193

1

APL(Dyalog Unicode)、22 バイトSBCS

完全なプログラム。

⌈/,{×/+/⍵}⌺3 3↑⍎20'⎕'

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

20⍴'⎕' 文字(stdinからの評価済み入力を表す)を長さ20に再形成します。

 それを実行します(20個のリストを使用します)

 リストを行列に混ぜる

{}⌺3 3 3行3列の各サブマトリックスで:

+/⍵ 行を合計する

×/ 合計を掛ける

, 合計の行列を平坦化する

⌈/ 最大を見つける


0

Powershell、103バイト

(($x=-split($args-replace'(\d+)(?= (\d+) (\d+))','$1+$2+$3')|iex)|%{$_*$x[$j+20]*$x[$j+++40]}|sort)[-1]

説明:

  • 正規表現は次のように各文字列に変換する1 2 3 4 5 6ような文字列へ1+2+3 2+3+4 3+4+5 5 6
  • 次に、スクリプトは文字列1+2+3 2+3+4 3+4+5 5 6をスペースで分割し、各要素をiexInvoke-Expressionのエイリアス)で評価します。結果はのような配列です6,9,11,5,6
  • 最後に、スクリプトはすべての配列を1つに連結し、積を計算して、最大値を返します。

非負の整数の合計の最大の積が必要であることが不可欠です。したがって、各行の最後の2つの値と最後の2つの行を除外する必要はありません。

ゴルフのテストスクリプトが少ない

$f = {

$x=-split($args-replace'(\d+)(?= (\d+) (\d+))','$1+$2+$3')|iex
($x|%{$_*$x[$j+20]*$x[$j+++40]}|sort)[-1]

}

@(
    ,(  3375,
        "1 2 3 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1",
        "4 3 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1",
        "4 3 3 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1",
        "1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1",
        "1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1",
        "1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1",
        "1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1",
        "1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1",
        "1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1",
        "1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1",
        "1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1",
        "1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1",
        "1 1 1 1 1 1 1 1 1 1 1 1 5 5 5 1 1 1 1 1",
        "1 1 1 1 1 1 1 1 1 1 1 1 5 5 5 1 1 1 1 1",
        "1 1 1 1 1 1 1 1 1 1 1 1 5 5 5 1 1 1 1 1",
        "1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1",
        "1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1",
        "1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1",
        "1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1",
        "1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
    ,(  328536000,
        "40 30 42 222 74 265 93 209 115 274 139 177 7 274 12 15 103 36 236 91",
        "294 97 35 272 167 126 18 262 292 48 8 296 85 93 245 4 4 240 276 153",
        "52 8 163 270 242 224 142 72 99 240 199 26 224 198 96 242 295 70 56 247",
        "247 130 216 68 266 142 93 214 30 8 12 163 59 84 40 287 233 65 30 242",
        "283 245 164 53 148 282 73 186 296 3 9 233 184 30 205 221 92 96 5 101",
        "132 228 43 91 228 37 266 140 159 109 10 230 40 114 264 3 266 164 219 283",
        "70 207 218 28 299 78 279 30 179 118 196 138 61 229 110 55 203 73 124 112",
        "16 232 28 187 292 78 194 70 65 203 255 227 176 21 32 225 11 15 92 151",
        "58 237 261 41 213 171 170 111 4 209 99 194 40 108 267 137 179 31 35 221",
        "184 209 264 275 163 268 261 40 198 185 45 188 280 273 54 79 270 286 273 121",
        "208 83 66 156 104 62 188 68 53 194 46 279 280 170 266 148 272 285 178 245",
        "210 130 213 118 165 210 213 66 54 189 166 193 57 213 14 101 143 109 172 101",
        "80 193 287 4 140 65 208 111 8 206 107 285 109 29 211 78 170 247 290 193",
        "148 123 15 164 28 153 222 67 156 165 6 163 114 77 165 17 143 209 278 100",
        "3 102 58 148 82 181 84 29 2 236 231 195 118 278 252 257 179 123 276 287",
        "143 141 254 142 200 243 171 32 164 195 235 260 269 191 190 46 65 166 82 146",
        "69 194 65 220 234 110 45 135 125 208 138 20 233 291 256 162 148 216 247 138",
        "10 53 164 107 2 270 226 227 88 206 193 13 41 130 218 249 76 35 207 91",
        "199 36 207 256 58 215 28 277 234 29 198 148 219 244 136 16 30 258 219 264",
        "183 118 48 218 15 125 279 103 73 8 86 113 9 157 239 273 146 208 50 86")
    ,(  185193,
        "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20",
        "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20",
        "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20",
        "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20",
        "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20",
        "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20",
        "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20",
        "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20",
        "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20",
        "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20",
        "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20",
        "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20",
        "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20",
        "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20",
        "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20",
        "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20",
        "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20",
        "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20",
        "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20",
        "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20")
    ,(  311042813,
        "242 248 292 60 9 45 94 97 294 202 219 118 115 243 207 81 288 289 241 232",
        "236 225 205 227 242 85 139 63 5 162 170 121 208 133 22 235 125 288 209 270",
        "31 182 108 170 88 268 297 66 249 158 285 157 267 117 150 18 44 66 117 223",
        "205 32 93 132 33 99 209 282 222 272 255 1 80 270 202 54 117 35 139 273",
        "87 74 113 146 177 14 154 92 282 4 192 60 171 286 66 299 89 276 138 289",
        "60 16 143 277 202 284 77 296 215 96 200 10 226 143 136 131 218 246 254 20",
        "244 118 299 218 81 195 129 93 205 202 264 141 196 150 214 72 231 136 243 192",
        "236 157 176 187 104 182 134 29 151 234 81 143 22 119 45 241 17 225 197 7",
        "156 284 92 13 131 60 113 77 228 65 200 83 3 63 83 88 241 113 115 198",
        "62 101 242 270 121 122 119 78 105 273 55 7 239 236 37 252 66 164 56 44",
        "70 57 100 87 34 298 140 259 36 257 1 204 110 299 245 56 43 121 192 10",
        "240 36 272 255 10 194 143 66 27 131 22 78 57 71 128 5 1 155 236 122",
        "281 160 42 147 272 151 196 240 291 280 209 245 271 46 103 35 85 145 78 140",
        "155 74 232 205 235 223 147 39 171 240 56 187 184 70 28 81 293 125 283 159",
        "297 203 75 46 221 77 106 12 268 94 220 156 78 97 266 208 228 137 212 49",
        "4 157 69 51 225 23 61 202 19 23 41 260 161 218 142 251 299 187 283 158",
        "118 136 71 77 21 199 110 87 103 120 153 157 213 234 155 141 135 24 120 199",
        "16 204 292 245 54 260 294 159 254 15 209 41 154 54 231 167 87 291 31 26",
        "212 274 99 199 170 184 47 227 64 2 117 275 67 84 143 214 143 125 24 61",
        "205 250 133 88 210 112 4 160 3 287 54 143 293 94 287 42 105 94 76 169")
) | % {
    $expected, $a = $_
    $result = &$f @a
    "$($result-eq$expected): $result"
}

出力

True: 3375
True: 328536000
True: 185193
True: 311042813

Powershell、105バイト、正規表現なしの代替

|?{$_%20-le17}ジョーイの答えのスマートな表現へのオマージュ:

(($x=($y=-split$args)|?{$i++%20-le17}|%{+$y[$i-1]+$y[$i]+$y[$i+1]})|%{$_*$x[$j+18]*$x[$j+++36]}|sort)[-1]

これは入力仕様には従いません。
ジョーイ

どうして?..........
mazzy

スクリプトは標準入力ではなく引数として入力を受け取ります。
Joey、

なぜ「標準入力」は「stdin」だけだと思いますか?
マジー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.