- 论坛徽章:
- 0
|
回复 22# blackold
过奖了!
下面贴个老外的dc作品,是计算汉诺塔的。
运行方法:dc -e n hanoi.dc- #
- # The Towers Of Hanoi
- # dc (Unix Desk Calculator) version
- # Copyright (C) 2003 Amit Singh. All Rights Reserved.
- # http://hanoi.kernelthread.com
- #
- # Tested under GNU dc 1.3
- #
- # Usage: dc -e n hanoi.dc
- # where n is the number of disks
- [ # move(from, to)
- n # print from
- [ --> ]n # print " --> "
- p # print to\n
- sw # p doesn't pop, so get rid of the value
- ]sm
- [ # init(n)
- sw # tuck n away temporarily
- 9 # sentinel as bottom of stack
- lw # bring n back
- 1 # "from" tower's label
- 3 # "to" tower's label
- 0 # processed marker
- ]si
- [ # Move()
- lt # push to
- lf # push from
- lmx # call move(from, to)
- ]sM
- [ # code block <d>
- ln # push n
- lf # push from
- lt # push to
- 1 # push processed marker 1
- ln # push n
- 1 # push 1
- - # n - 1
- lf # push from
- ll # push left
- 0 # push processed marker 0
- ]sd
- [ # code block <e>
- ln # push n
- 1 # push 1
- - # n - 1
- ll # push left
- lt # push to
- 0 # push processed marker 0
- ]se
- [ # code block <x>
- ln 1 =M
- ln 1 !=d
- ]sx
- [ # code block <y>
- lMx
- lex
- ]sy
- [ # quit()
- q # exit the program
- ]sq
- [ # run()
- d 9 =q # if stack empty, quit()
- sp # processed
- st # to
- sf # from
- sn # n
- 6 #
- lf #
- - #
- lt #
- - # 6 - from - to
- sl #
- lp 0 =x #
- lp 0 !=y #
- lrx # loop
- ]sr
- lix # init(n)
- lrx # run()
复制代码 |
|