mirror of
https://github.com/PDP-10/stacken.git
synced 2026-01-26 20:02:17 +00:00
108 lines
3.5 KiB
Plaintext
108 lines
3.5 KiB
Plaintext
Program f|r att vrida den ungerska kuben till sitt utg}ngsl{ge.
|
|
==============================================================
|
|
|
|
Programmet skrivet av Hans Riesel.
|
|
|
|
Programmet startas med "R GAM:KUB"
|
|
|
|
Kubens olika delar indelas i:
|
|
mittbitar, sex st, anger sidans f{rg
|
|
h|rnbitar }tta st
|
|
kantbitar, 12 st
|
|
|
|
I programmet betecknas de olika sidornas f{rger med nummer enligt:
|
|
1 = vit, 2 = bl}, 3 = r|d, 4 = orange, 5 = gr|n och 6 = gul.
|
|
|
|
I handeln f|rekommer flera olika f{rgsammans{ttningar av kuber.
|
|
Detta program {r utformat f|r en kub av f|ljande utseende:
|
|
|
|
Med beteckningarna nedan kan kuben ritas upp s} h{r:
|
|
|
|
d 3
|
|
phab med f{rgbeteckningar: 6215
|
|
g 4
|
|
|
|
Eller samma sak uttryckt med ord: H}ller man vit sida mot sig
|
|
och bl} upp}t ska orange vara till v{nster och r|tt till h|ger.
|
|
Bortre sidan gul och nedre gr|n. Har man andra placeringar av
|
|
f{rgerna m}ste man byta beteckning p} f{rgerna p} kuben, vilket
|
|
givetvis kan vara sv}rt att genomf|ra.
|
|
|
|
|
|
D} programmet exekveras beg{rs indata f|r en sida i taget. Det ska
|
|
anges }tta siffror skilda }t av mellanslag f|r var sida. En sida
|
|
matas in i f|ljande ordning:
|
|
1 5 2
|
|
8 X 6
|
|
4 7 3
|
|
|
|
|
|
Antalet m|jliga kombinationer av kuben {r:
|
|
2**12 * (8!/2) * 3**7 * (12!/2) = 43 252 003 274 489 856 000.
|
|
|
|
Kuben antages ha sidorna:
|
|
d droit, h|ger
|
|
g gauche, v{nster
|
|
h haut, |vre
|
|
b bas, nedre
|
|
a avant, fr{mre
|
|
p posterieur, bakre
|
|
|
|
H|rnen kallas med beteckningarna ovan:
|
|
hag -> h1 bag -> h5
|
|
hgp -> h2 bgp -> h6
|
|
hpd -> h3 bpd -> h7
|
|
hda -> h4 bda -> h8
|
|
|
|
Kantbitarna:
|
|
ha -> k1 pd -> k7
|
|
hg -> k2 da -> k8
|
|
hp -> k3 ba -> k9
|
|
hd -> k4 bg -> k10
|
|
ag -> k5 bp -> k11
|
|
gp -> k6 bd -> k12
|
|
|
|
s betyder att sidan s skall vridas 1/4 varv medsols, s2 betyder
|
|
att den skall vridas 1/2 varv och s3 eller s-1 att den skall
|
|
vridas 1/4 varv motsols.
|
|
|
|
(s)**n betyder att vridningen s ska utf|ras n g}nger.
|
|
|
|
A, B och C betecknar sinsemellan n{rst}ende sidor. T ex sidorna
|
|
a, g och p.
|
|
|
|
|
|
Transformationsformlerna utf|res fr}n v{nster till h|ger.
|
|
|
|
]terst{llandet av kuben sker i fyra etapper:
|
|
1. Kantbitarna p} sina r{tta platser. Vridning 1-10 nedan.
|
|
2. Kantbitarna vrids r{tt. Vridning 12-13.
|
|
3. H|rnen p} sina r{tta platser. Vridning 14-16.
|
|
4. H|rnen vrids r{tt. Vridning 17-18.
|
|
|
|
1. A Vrid en sida 1/4 varv. (18 olika vridningar m|jliga).
|
|
2. AB Vrid tv} n{rliggande sidor 1/4 varv. (270)
|
|
3. AB(A-1) Vrid tv} n{rliggande sidor 1/4 varv och f|rsta sidan
|
|
tillbaka igen.
|
|
4. AB(A-1)(B-1) Vrid tv} n{rliggande sidor 1/4 varv och tillbaka igen.
|
|
5. ABC(B-1)(A-1)
|
|
6. ABC(B-1)(C-1)(A-1) Vrid tre n{rliggande sidor 1/4 varv och
|
|
tillbaka i permuterad ordning.
|
|
7. (A2)(B2)(C2)(B2)(C2)(A2)
|
|
8. (AB)**3 Vrid tv} n{rliggande sidor v{xelvis tre g}nger.
|
|
9. (d-1)(h-1)dhp(h-1)(p-1) Byte av n{rliggande kantbitar k1 och k2.
|
|
(Sidoeffekt: V{ndning av k7, byte av h|rnen h1 och h7 samt
|
|
vridning av h|rnet h3).
|
|
10. Byt kantbitar i samma mittplan.
|
|
12. (a-1)ga(g-1)h(g-1)(h-1)g V{ndning av n{rliggande kantbitar k1
|
|
och k2. (Sidoeffekt: Byte av h|rnen h1 och h4 samt h2 och h5).
|
|
13. V{nd kantbitar i samma mittplan.
|
|
14. (ad(a-1)(d-1))**3 Byter h|rnen h1 och h4 samt h7 och h8.
|
|
15. Byt tre h|rn, variant 1.
|
|
16. Byt tre h|rn, variant 2.
|
|
17. ph(p-1)(h-1)(g-1)(p-1)g(a-1)(g-1)pghp(h-1)(p-1)a
|
|
Vrider h|rnen h1 och h4.
|
|
18. Vrid motst}ende h|rn.
|
|
|
|
<Slut p} GAM:KUB.HLP 810701/PO>
|