ubuntuusers.de

Java 2d-Array doppelte Werte suchen

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17620

Wohnort: Berlin

Mit Zeile 2 so:

1
val arr = (0L to MAX) map {x => x * x * x}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
1  12  9  10 (1729 ?= 1729)
1  103  64  94 (1092728 ?= 1092728)
1  150  73  144 (3375001 ?= 3375001)
1  249  135  235 (15438250 ?= 15438250)
1  495  334  438 (121287376 ?= 121287376)
2  16  9  15 (4104 ?= 4104)
2  34  15  33 (39312 ?= 39312)
2  24  18  20 (13832 ?= 13832)
2  89  41  86 (704977 ?= 704977)
2  150  83  141 (3375008 ?= 3375008)
2  127  95  106 (2048391 ?= 2048391)
2  206  128  188 (8741824 ?= 8741824)
2  300  146  288 (27000008 ?= 27000008)
2  466  165  459 (101194704 ?= 101194704)
2  385  252  345 (57066633 ?= 57066633)
2  498  270  470 (123506000 ?= 123506000)

usw.

1
2
3
4
5
6
7
8
292  492  414  418 (143992576 ?= 143992576)
294  483  392  427 (138090771 ?= 138090771)
303  457  394  396 (123262120 ?= 123262120)
306  492  384  450 (147748104 ?= 147748104)
307  426  363  388 (106243219 ?= 106243219)
312  450  338  436 (121496328 ?= 121496328)
346  471  360  463 (145908847 ?= 145908847)
359  460  408  423 (143604279 ?= 143604279)

1x nachgerechnet (Zeile 1 oben)

snafu1

Avatar von snafu1

Anmeldungsdatum:
5. September 2007

Beiträge: 2133

Wohnort: Gelsenkirchen

Scheint jetzt korrekt zu sein. Jetzt muss man "nur" noch ein Muster in den Werten erkennen, damit man eine Berechnung schreiben kann, die ohne Brute Force auskommt. ☺

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Bei Euren Lösungen beginnt Ihr immer bei i=1, und nicht bei i=0 ... ist das wirklich die Vorgabe ?

Damit ergäben sich nämlich noch weitere Lösungen, die der Bestimmungsgleichung

(0 +) b³ = c³ + d³

... nur so als Frage.

LG,

track

fnumatic

Anmeldungsdatum:
20. Februar 2007

Beiträge: 379

Bruteforce (nicht auf Korrektheit geprüft)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
val MAX = 500
val cubes = (0L to MAX) map ( x => x * x * x)

val mtch = mutable.Map[Long, List[Pairs]]().withDefault(_ => Nil)
for (i <- 0 to MAX;  j <- i to MAX) {
  val sum = cubes(i) + cubes(j)
  mtch.put(sum, Pairs(i, j) :: mtch(sum))
}

val flt = mtch filter (p => p._2.length > 1)
println("Anzahl Summen " + flt.size)
flt.keySet.toList.sorted foreach {
  k =>
    val l = flt(k)
    println(k + " " + l)
}

///

1
2
3
4
5
6
7
8
9
562
1729 List(Pairs(9,10), Pairs(1,12))
4104 List(Pairs(9,15), Pairs(2,16))
13832 List(Pairs(18,20), Pairs(2,24))
20683 List(Pairs(19,24), Pairs(10,27))
32832 List(Pairs(18,30), Pairs(4,32))
39312 List(Pairs(15,33), Pairs(2,34))
40033 List(Pairs(16,33), Pairs(9,34))
46683 List(Pairs(27,30), Pairs(3,36))

VicariousVirus

(Themenstarter)
Avatar von VicariousVirus

Anmeldungsdatum:
7. Mai 2011

Beiträge: 27

Wohnort: Berlin

Also: Ich habe das Ding dann doch gelöst, danke an meine Fachschaft für den entscheidenden Tip! Also ich habe statt eines 2d-Array einen "1d"-Array angelegt der mit Werte einer Form von M * M gibt und mit zwei for-loops das ganze befüllen. Anschließend habe ich es sortieren lassen und mit einer weiteren for-Schleife und der if-Schleife die mir meine gesuchten Elemente filter den Array auslesen lassen. Wenn ich eine Bewertung dazu habe kann es, falls Interesse besteht auch gerne anfügen.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17620

Wohnort: Berlin

track schrieb:

Bei Euren Lösungen beginnt Ihr immer bei i=1, und nicht bei i=0 ... ist das wirklich die Vorgabe ?

Seit 10:37 (angekündigt) bzw. 10:51 nicht mehr.

Interessanterweise wird bis 499 keine passende Gleichung gefunden, obwohl mit der 1, 2, 3, ... 42 als kleinster Zahl Lösungen existieren. Ich schätze man findet einen Beweis, wieso es mit 0 keine Lösung gibt.

Antworten |