Nachgeprüft
Yap, stimmt!
julia> x
-80538738812075974
julia> y
80435758145817515
julia> z
12602123297335631
julia> k = x^3 + y^3 + z^3;
julia> k .== 42
true
Meine Prüfung mit Julia
Mit massivem Einsatz von Computern sei für fast alle Zahlen zwischen 1 und 1000 eine Lösung gefunden, erläutert Krug. Bis vor Kurzem waren nur 14 Zahlen übrig geblieben, „die sich beharrlich einer Darstellung als Summe dreier Kuben erwehrten“. Kuben oder Kubikzahlen sind Zahlen „hoch drei“, die man etwa aus Angaben für Volumen kennt.
65 Jahre nach dem Stellen des ursprünglichen Problems löste Booker dies nun mithilfe von Andrew Sutherland vom Massachusetts Institute of Technology (MIT) und einer Rechnerkapazität über ein Netzwerk, das ungenutzte Leistung von mehr als einer halben Million Heim-PCs nutzt, wie es in einer Mitteilung heißt. Sie lautet: x = -80538738812075974, y = 80435758145817515 und z = 12602123297335631.
42: Mathe-Rätsel nach Jahrzehnten geknackt - WELT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ich muss mich mit anderen Rätseln herumschlagen. Die sind aber bei Weitem nicht so rätselhaft wie diese Kubik-Summe = 42.
Aber auch lästig. Bei mir funzt der KDTree aus dem Paket NearestNeighbors
nicht. In der Julia-Box funzt es aber schon.
Deswegen musste ich diesen Schritt zunächst mal überspringen, dafür habe ich mit dem
Example 3: PCA for dimensionality reduction
etwas herumgespielt:
using DataFrames
houses = readtable("houses.csv")
using Plots
plot(size=(500,500),leg=false)
filter_houses = houses[houses[:sq__ft].>0,:]
# Pkg.add("MultivariateStats")
using MultivariateStats
filter_houses[:bnb] = filter_houses[:beds] + filter_houses[:baths]
filter_houses[:ppsqm] = filter_houses[:price] ./ filter_houses[:sq__ft]
# F = filter_houses[[:sq__ft,:price]]
# F = filter_houses[[:sq__ft,:baths]]
# F = filter_houses[[:sq__ft,:beds]]
# F = filter_houses[[:sq__ft,:bnb]]
# F = filter_houses[[:ppsqm,:bnb]]
F = filter_houses[[:price,:bnb]]
F = convert(Array{Float64,2},F)'
M = fit(PCA, F)
y = transform(M, F)
Xr = reconstruct(M, y)
scatter(F[1,:],F[2,:])
scatter!(Xr[1,:],Xr[2,:])
gibt diese Grafiken aus:
F = filter_houses[[:ppsqm,:bnb]]
F = filter_houses[[:sq__ft,:bnb]]
In dem einen habe ich die Quadratmeterpreise errechnet und der Anzahl der Betten + Bäder gegenübergestellt, in dem anderen die gleiche Gegenüberstellung mit Quadratmetern statt Quadratmeterpreisen.
Und hier noch einmal die Preise gegenüber den Quadratmetern:
F = filter_houses[[:sq__ft,:price]]
Etwas weiter verinnerlicht habe ich das Hinzufügen einer Spalte zu einem Dataframe:
filter_houses[:bnb] = filter_houses[:beds] + filter_houses[:baths]
filter_houses[:ppsqm] = filter_houses[:price] ./ filter_houses[:sq__ft]
Ich nehme an, dass
filter_houses[:bnb] = filter_houses[:beds] .+ filter_houses[:baths]
die korrektere Schreibweise ist. Am besten ändere ich das mal in meinem Skript.
Für Spaß versuche ich noch mal diesen Unsinn:
filter_houses[:bnbpsqm] = filter_houses[:bnb] ./ filter_houses[:sq__ft]
F = filter_houses[[:price,:bnbpsqm]]
Das bringt mir das folgende Diagramm:
Und auch diesen Quatsch darf es noch geben:
filter_houses[:sqmpbnb] = filter_houses[:sq__ft] ./ filter_houses[:bnb]
F = filter_houses[[:sqmpbnb,:price]]
Zeigt:
So isses wohl. Woll?
Kommentare
Kommentar veröffentlichen