NB. Christmas
NB. To continue, please consult the code grid in the manual. Enter the
code at row 2978, column 3083.
n=:]+[:-:[:*/_2 _1++ NB. ROW n COL
REPEATS=: 2978 n 3083
START=: 20151125
PART1=: (33554393x|252533x*])^:(REPEATS-1)x:START
PART2=: 'finish the other 5!'
NB. Day 21
Note 'information'
hero
Weapons: Cost Damage Armor
Dagger 8 4 0
Shortsword 10 5 0
Warhammer 25 6 0
Longsword 40 7 0
Greataxe 74 8 0
Armor: Cost Damage Armor
Leather 13 0 1
Chainmail 31 0 2
Splintmail 53 0 3
Bandedmail 75 0 4
Platemail 102 0 5
Rings: Cost Damage Armor
Damage +1 25 1 0
Damage +2 50 2 0
Damage +3 100 3 0
Defense +1 20 0 1
Defense +2 40 0 2
Defense +3 80 0 3
100 hit points.
BOSS
Hit Points: 103
Damage: 9
Armor: 2
)
read=: 1!:1@:boxopen
Until=: 2 :'u^:(0-:v)^:_'
odd=: 1&(2b10001 b.)
even=: -.@:odd
NAMES=: 'HERODAMAGE HEROARMOR HEROHP BOSSDAMAGE BOSSARMOR BOSSHP MELEE'
(NAMES)=: i.#;:NAMES
battle=: fight Until death
play=: cleanup@:battle@:prepare
melee=: MELEE&{
next=: MELEE >:@:{`[`]} ]
fight=: next@:turn
turn=: (hero)`(boss)@.(odd@:melee)
hero=: BOSSHP&(((BOSSHP{])-(1>.(HERODAMAGE{])-(BOSSARMOR{])))`[`]})
boss=: HEROHP&(((HEROHP{])-(1>.(BOSSDAMAGE{])-(HEROARMOR{])))`[`]})
death=: 1 e.1>(HEROHP,BOSSHP)&{
cleanup=: ]
prepare=: 3 : 0 NB. prepare HERODAMAGE,HEROARMOR
NB. 100 hit points.
NB. BOSS
NB. Hit Points: 103
NB. Damage: 9
NB. Armor: 2
A=. 0#~#;:NAMES
A=. HEROHP (100"_)`[`]} A
A=. HERODAMAGE (({.y)"_)`[`]} A
A=. HEROARMOR (({:y)"_)`[`]} A
A=. BOSSHP (103"_)`[`]}A
A=. BOSSDAMAGE (9"_)`[`]}A
A=. BOSSARMOR (2"_)`[`]}A
)
test_prepare=: 3 : 0 NB. prepare HERODAMAGE,HEROARMOR
NB.For example, suppose you have 8 hit points, 5 damage, and 5 armor,
and that the boss has 12 hit points, 7 damage, and 2 armor:
A=. 0#~#;:NAMES
A=. HEROHP (8"_)`[`]} A
A=. HERODAMAGE (({.y)"_)`[`]} A
A=. HEROARMOR (({:y)"_)`[`]} A
A=. BOSSHP (12"_)`[`]}A
A=. BOSSDAMAGE (7"_)`[`]}A
A=. BOSSARMOR (2"_)`[`]}A
)
WEAPON=: _3[\ 8 4 0 10 5 0 25 6 0 40 7 0 74 8 0
ARMOR=: 0,_3[\ 13 0 1 31 0 2 53 0 3 75 0 4 102 0 5
RINGS=: 0,_3[\ 25 1 0 50 2 0 100 3 0 20 0 1 40 0 2 80 0 3
A=:{<"1 L:0 WEAPON;ARMOR;RINGS;RINGS
B=:(~.L:1),A
C=: +/&:>&>B NB. C is an N by 3 array of cost, damage, armor
D=:(#~ 0 < ([: play }.)"1)C
PART1=: {.{./:~D
PART2=: {.{.\:~(#~ 1 > ([: play }.)"1)C
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm