Suchen Sie bei einem 20 × 20-Raster nicht negativer Ganzzahlen ein 3 × 3-Teilraster, in dem das Produkt der Summen der einzelnen Zeilen das Maximum erreicht. In Formeln gesprochen:
Angesichts des 3 × 3-Teilgitters
Die zu maximierende Funktion ist
Pro Zeile wird die Summe berechnet und die einzelnen Summen multipliziert.
Ein Beispiel (nur 5 × 5):
Der rot hervorgehobene Teil ist der Teil, in dem der Wert der Funktion für das gesamte Raster am größten ist:
(35 + 272 + 167) ≤ (163 + 270 + 242) ≤ (216 + 68 + 266) = 175972500
Eingang
Die Eingabe erfolgt bei Standardeingabe und besteht aus 20 Zeilen mit jeweils 20 Zahlen, die durch ein Leerzeichen (U + 0020) getrennt sind. Die Zahlen sind klein genug, dass eine 32-Bit-Ganzzahl mit Vorzeichen ausreicht, um das Ergebnis zu berechnen.
Sie können davon ausgehen, dass Eingaben aus einer Datei umgeleitet werden.
Ausgabe
Die Ausgabe ist das Ergebnis der Funktion für das 3 × 3-Teilgitter, die das größte Ergebnis liefert. Im obigen Beispiel wäre dies gewesen
175972500
.
Probeneingabe 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 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
Beispielausgabe 1
3375
Probeneingabe 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
Beispielausgabe 2
328536000
Probeneingabe 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
Beispielausgabe 3
185193
Probeneingabe 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
Beispielausgabe 4
311042813
Für die Interessierten die Länge der Einsendungen, die wir in unserem Wettbewerb erhalten haben:
120 - AWK
124 - C
133 - Haskell
174 - C
270 - VB.NET
Und unsere eigenen (nicht eingestuften) Lösungen:
55 - Golfscript
118 - Ruby
192 - PowerShell
quelle
Python - 146 Zeichen
quelle
g=eval('map(int,raw_input().split()),'*20)
, weitere vier Bytes für insgesamt 139 zuC #,
324321308 ZeichenLesbar:
.Trim()
Wenn Sie sicherstellen können, dass die Eingabe nur\n
(nein\r
) verwendet und nach der letzten Zahlenreihe keine neue Zeile steht, können Sie 14 Zeichen sparen, indem Sie beide Anrufe entfernen .Bearbeitungen
(333 → 324 Zeichen) Es wurde mir klar, dass ich
x, y
die Deklaration oben ergänzen könnte, anstatt jede in derfor
Anweisung zu deklarieren . dass ich eines derToArray
s ändern könnteToList
; dass ichy
innerhalb des Anrufs inkrementierenf
und ihn damit im loswerden könntefor
.(324 → 321 Zeichen) Verschieben Sie die Zuweisung in
m
in diefor
Anweisung, und entfernen Sie ein Semikolon und zwei Locken.(321 → 308 Zeichen) Joeys Vorschläge in den Kommentaren. Vielen Dank!
quelle
Trim()
innerhalb desint.Parse
Anrufs kann tatsächlich gelöscht werden (es ignoriert nachgestellte Leerzeichen) (314). Sie können dann auchSelect
nurint.Parse
als Argument aufrufen ; dort wird kein Lambda mehr benötigt (308). Ich denke, dies könnte verkürzt werden, indem an einem 1D-Array mit 400 Elementen anstelle der Liste der Arrays gearbeitet wird, wie Sie es jetzt haben, aber ich kann es momentan nicht anpassen ;-)Java, 299 Zeichen
quelle
public
, Sie können die Array-Deklaration vonx
in die vorherige Zeile mit ziehenx[][]=new int[t][t]
. Sie können ein eindimensionales Array verwenden, das den Zugriff erheblich vereinfacht. Sie können das entfernenimport
und dasjava.util.
zweimal inline einfügen, was 5 Bytes kürzer ist. Sie können inline,e
was 3 Bytes spart. Mit all dem habe ich es auf 290 Bytes gebracht.Char Count (no spaces)
. Wird die meisten dieser Änderungen vornehmen. Der Code wird sich sehr ändern, wenn ich ein 1D-Array verwende.x[]=new int[t*t]
, die Initialisierung inx[i]=s.nextInt();
und die Aktualisierungp
inp*=x[t*k+j]+x[t*k+j+1]+x[t*k+j+2];
. Nichts zu magisch, denke ich :-)enum M{M;{code;}}
, und Sie können wahrscheinlich die Inkrement- und Schleifenbedingungen zusammenführen.class M{static{java.util.Scanner s=...
Ihnen kommen Sie zu 271. Verbesserung 10%. :) Nach der Ausgabe wird eine Fehlermeldung angezeigt, die Sie jedoch möglicherweise stillschweigend ignorieren. :)Python (202)
Bearbeiten: R wurde als Bereich (18) anstelle von 17 festgelegt.
quelle
Ruby - 78 Zeichen
quelle
Ruby, 106 Zeichen
Noch eine einfache Lösung.
index%20
um Überläufe in die nächste Zeile zu vermeiden.quelle
Windows PowerShell, 116
117124152170Eigentlich ziemlich unkompliziert.
quelle
C
184171 Zeichenquelle
#define f(i,b)for(i=0;i<b;i++)
indem Sie0,
die Aufrufe verwenden und daraus entfernen .#define f(i,b)for(i=b;--i;)
stattdessen verwenden?J + tr, 84 + 10
läuft so,
< golfdata tr \\n ' '| ./test.ijs
also betrachte ich dentr \\n ' '
Teil als Teil des Programms.quelle
Haskell, 129 Zeichen
quelle
Golfscript, 48 Zeichen
vorheriger
Einige Erklärungen, aber ich bin immer noch ein Neuling im Golfskript, andere sind möglicherweise nicht korrekt. Bitte korrigieren Sie mich, wenn Sie etwas falsch sehen.
Tests
quelle
APL (Dyalog Unicode) , 22 Byte SBCS
Komplettes Programm.
Probieren Sie es online aus!
20⍴'⎕'
Formen Sie das Zeichen⎕
(das für die ausgewertete Eingabe von stdin steht) auf Länge 20 um⍎
Führen Sie das aus (gibt Verwendung 20 Listen)↑
Mischen Sie die Listen zu einer Matrix{
…}⌺3 3
Auf jeder 3-mal-3-Submatrix:+/⍵
summiere die Zeilen×/
multiplizieren Sie die Summen,
Reduzieren Sie die Summenmatrix⌈/
finde das Maximumquelle
Powershell, 103 Bytes
Erläuterung:
1 2 3 4 5 6
in eine Zeichenfolge wie1+2+3 2+3+4 3+4+5 5 6
;1+2+3 2+3+4 3+4+5 5 6
durch Leerzeichen auf und wertet jedes Element durch ausiex
(Alias für Invoke-Expression ). Ein Ergebnis ist ein Array wie6,9,11,5,6
;Es ist wichtig, dass wir ein Maximum an Produkten aus der Summe nicht negativer Ganzzahlen benötigen . Wir müssen also nicht die letzten 2 Werte in jeder Zeile und die letzten 2 Zeilen herausfiltern.
Weniger Golf-Testskript
Ausgabe
Powershell, 105 Bytes, Alternative ohne Regexp
Die Hommage an den klugen Ausdruck
|?{$_%20-le17}
in der Antwort von Joey :quelle