|
DataMuseum.dkPresents historical artifacts from the history of: RegneCentralen GIER Computer |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RegneCentralen GIER Computer Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 5303 (0x14b7) Description: Bits:30000606 Sorteper Algol Types: 8-hole paper tape Notes: Gier Text
Sorteperbegin _____integer u,v,i,j,w,sp,m; _______real b,r,rad; boolean sk; ____ _______integer array col,val,post,ante[1:53], _______ _____cat,prim,ult,num,prox,prev[0:9];procedure mov(i,j,k); _________value i,j,k; integer i,j,k; _____ _______begin integer u; _____ _______if prim[j]=i then prim[j]:= post[prim[j]] else __ ____ ____if ult[j] =i then ult[j]:= ante[ult[j]] else begin __ ____ ____ _____post[ante[i]]:= post[i];ante[post[i]]:= ante[i] end; ___if num[k]=0 then begin __ ____ _____prim[k]:= ult[k]:= i end else ___ ____if i<prim[k] then begin __ ____ _____post[i]:= prim[k]; ante[prim[k]]:= i; prim[k]:= i end else ___ ____if i>ult[k] then begin __ ____ _____ante[i]:= ult[k]; post[ult[k]]:= i; ult[k]:= i end else ___ ____begin _____u:= prim[k];L: u:= post[u]; if i>u then goto L; __ ____ ____post[ante[u]]:= i; ante[i]:= ante[u]; post[i]:= u; ante[u]:= iend; ___num[k]:= num[k]+1; num[j]:= num[j]-1;if num[j]=0∧j|0 then begin __ = ____ _____prox[prev[j]]:= prox[j]; prev[prox[j]]:= prev[j]; scct(j);skrvtekst(|< udgaar. <|) end > ___end mov; ___integer procedure ext(t,v); _______ _________value t,v; integer t,v; _____ _______begin integer i,j; _____ _______i:= prim[v];for j:= 2 step 1 until t do i:= post[i]; ___ ____ _____ __ext:= iend ext; ___integer procedure rand(n); _______ _________value n; integer n; _____ _______begin _____b:= b+rad; b:= b-entier(b); rand:= b⨯(n-1)+1end rand; ___procedure scct(j); _________value j; integer j; _____ _______begin _____skrvvr; skrvtegn(60); skrvtegn(cat[j]); skrvtegn(58)end scct; ___[ s t o p ] procedure scrib(i); _________value i; integer i; _____ _______begin _____skrvtegn(col[i]); skrvtegn(val[i]); skrvtegn(27)end scrib; ___procedure SCRIB(j); _________value j; integer j; _____ _______begin integer u; _____ _______scct(j);skrvtekst(|< har nu: |); < >u:= prim[j]; rep: scrib(u);if u<ult[j] then begin __ ____ _____u:= post[u]; goto rep end; ____ ___skrvvrend SCRIB; ___procedure trah; _________begin _____v:= prev[u]; i:= ext(rand(num[v]),v); mov(i,v,u); scct(u);skrvtekst(|< trækker |); scrib(i) < >end trah; ___skrvtekst(|< <Skriv her to tal mellem 0 og 1: |); >om1: b:= tast; rad:= tast;if b_0∨b_1∨rad_1∨rad_0 then begin __ < > > < ____ _____skrvtekst(|< <Begge tal skulle ligge mellem 0 og 1.Kom igen: |); goto om1 end; > ____ ___rad:= rad∧0.55; |spil:skrvtekst(|< <Skriv antallet af spillere: |); >om2: sp:= tast;if sp_0∨sp>9∨(sp-entier(sp)|0) then begin __ < = ____ _____skrvtekst(|< <Antallet skal være et helt, positivt tal, mindre end 10.Kom igen: |); goto om2 end; > ____ ___for i:= 1 step 1 until 13 do begin ___ ____ _____ __ _____col[i]:= 34; col[i+13]:= 41;col[i+26]:= 56; col[i+39]:= 18 end; ___col[53]:= 39;for i:= 1 step 1 until 9 do ___ ____ _____ __val[i]:= val[i+13]:= val[i+26]:= val[i+39]:= i;for i:= 0,1,2,3 do begin ___ __ _____val[10+i⨯13]:= 16; val[11+i⨯13]:= 50; val[12+i⨯13]:= 52;val[13+i⨯13]:= 34 end; ___val[53]:= 39;for i:= 1 step 1 until 53 do ___ ____ _____ __begin post[i]:= i+1; ante[i]:= i-1 end; _____ ___[ s t o p ] for i:= 1 step 1 until sp do begin ___ ____ _____ __ _____cat[i]:= 48+i; num[i]:= 0;prox[i]:= i+1; prev[i]:= i-1 end; ___prim[0]:= 1; ult[0]:= 53; num[0]:= 53; prox[sp]:= 1; prev[1]:= sp; m:= 53; w:= u:= rand(sp); nyt: i:= ext(rand(m),0); mov(i,0,u);if m>1 then begin __ ____ _____m:= m-1; u:= prox[u]; goto nyt end; ____ ___for i:= 1 step 1 until sp do SCRIB(i); ___ ____ _____ __u:= w; runde: trah; SCRIB(u); u:= prox[u];if u|w then goto runde; __ = ____ ____A: trah; sk:= true; ____B: i:= prim[u]; C: j:= post[i];D: if val[i]=val[j] then begin __ ____ _____if sk then begin __ ____ _____skrvtekst(|< lægger |); sk:= false end; < > _____ ___scrib(i); scrib(j); mov(i,u,0); mov(j,u,0);if num[u]>1 then goto B end else begin __ ____ ____ ___ ____ _____if j<ult[u] then begin __ ____ _____j:= post[j]; goto D end; ____ ___if i<ante[ult[u]] then begin __ ____ _____i:= post[i]; goto C end end; ____ ___ ___if num[u]>0 then SCRIB(u); v:= prox[u]; __ ____if v| prox[v] then begin u:= v; goto A end; __ = ____ _____ ____ ___scct(v); skrvtekst(|< blev Sorteper. <Vil De se et nyt spil: |); >om3: taststreng;if streng(|<ja|) then goto spil; __ < > ____ ____if streng(|<nej|) then goto exit; __ < > ____ ____skrvtekst(|< <Der skal skrives ja eller nej.Kom igen: |); goto om3; > ____exit: end Sorteper; ___[ s t o p ]