Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
70
Task/Mayan-numerals/BCPL/mayan-numerals.bcpl
Normal file
70
Task/Mayan-numerals/BCPL/mayan-numerals.bcpl
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
get "libhdr"
|
||||
|
||||
let reads(v) be
|
||||
$( v%0 := 0
|
||||
$( let ch = rdch()
|
||||
if ch = '*N' | ch = endstreamch break
|
||||
v%0 := v%0 + 1
|
||||
v%(v%0) := ch
|
||||
$) repeat
|
||||
$)
|
||||
|
||||
let digits(v) = valof
|
||||
$( for i=1 to v%0
|
||||
$( unless '0' <= v%i <= '9' resultis false
|
||||
v%i := v%i - '0'
|
||||
$)
|
||||
resultis true
|
||||
$)
|
||||
|
||||
let base20(v) be
|
||||
$( let i = ?
|
||||
for j=v%0-1 to 1 by -1
|
||||
for i=1 to j
|
||||
$( v%(i+1) := v%(i+1) + 10*(v%i & 1)
|
||||
v%i := v%i >> 1
|
||||
$)
|
||||
i := 1
|
||||
while v%i=0 & i<v%0 do i := i+1
|
||||
for j=i to v%0 do v%(j-i+1) := v%j
|
||||
v%0 := v%0-i+1
|
||||
$)
|
||||
|
||||
let mayan(v) be
|
||||
$( let border(n) be
|
||||
$( for i=1 to n do writes("+----")
|
||||
writes("+*N")
|
||||
$)
|
||||
let part(num, line) be
|
||||
test num=0 do
|
||||
writes(line=0 -> " @ ", " ")
|
||||
or
|
||||
$( num := num - line*5
|
||||
writes(num<=0 -> " ",
|
||||
num =1 -> " . ",
|
||||
num =2 -> " .. ",
|
||||
num =3 -> "... ",
|
||||
num =4 -> "....",
|
||||
"----")
|
||||
$)
|
||||
border(v%0)
|
||||
for l=3 to 0 by -1
|
||||
$( for d=1 to v%0
|
||||
$( wrch('|')
|
||||
part(v%d, l)
|
||||
$)
|
||||
writes("|*N")
|
||||
$)
|
||||
border(v%0)
|
||||
$)
|
||||
|
||||
let start() be
|
||||
$( let v = vec 1+255/BYTESPERWORD
|
||||
$( writes("Number? ")
|
||||
reads(v)
|
||||
if v%0=0 finish
|
||||
unless digits(v) loop
|
||||
base20(v)
|
||||
mayan(v)
|
||||
$) repeat
|
||||
$)
|
||||
Loading…
Add table
Add a link
Reference in a new issue