24-game: fixing invalid operator input handling in get-operator
parent
eeaffb14b8
commit
1df34203e6
|
@ -1,6 +1,12 @@
|
|||
|
||||
USING: 24-game sequences tools.test ;
|
||||
|
||||
USING: 24-game io.streams.string kernel math sequences tools.test ;
|
||||
IN: 24-game.tests
|
||||
|
||||
{ t } [ make-24 first4 makes-24? ] unit-test
|
||||
|
||||
{ f } [ (operators) "hello" find-operator ] unit-test
|
||||
|
||||
{ + } [ "+" [ (operators) get-operator ] with-string-reader ] unit-test
|
||||
|
||||
{ swap } [
|
||||
"bad\ninput\nswap" [ (operators) get-operator ] with-string-reader
|
||||
] unit-test
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
! Copyright © 2008 Reginald Keith Ford II
|
||||
! 24, the Factor game!
|
||||
USING: accessors backtrack combinators continuations formatting io
|
||||
USING: accessors backtrack combinators continuations formatting fry io
|
||||
kernel math prettyprint quotations random sequences shuffle ;
|
||||
IN: 24-game
|
||||
|
||||
|
@ -38,13 +38,14 @@ CONSTANT: (operators) { + - * / rot swap q }
|
|||
: operators ( array -- operators )
|
||||
length 3 < [ \ rot (operators) remove ] [ (operators) ] if ;
|
||||
|
||||
: find-operator ( string operators -- word/f )
|
||||
[ name>> = ] with find nip ;
|
||||
: find-operator ( operators string -- word/f )
|
||||
'[ name>> _ = ] find nip ;
|
||||
|
||||
: get-operator ( operators -- word )
|
||||
dup "Operators: %u\n" printf flush
|
||||
readln over find-operator dup
|
||||
[ "Operator not found..." print get-operator ] unless nip ;
|
||||
dup readln find-operator [ ] [
|
||||
"Operator not found..." print get-operator
|
||||
] ?if ;
|
||||
|
||||
: try-operator ( array -- array )
|
||||
[ pprint nl ]
|
||||
|
|
Loading…
Reference in New Issue