Bulls and Cows


Task

Create a four digit random number from the digits   1   to   9,   without duplication.

The program should:

   ask for guesses to this number
   reject guesses that are malformed
   print the score for the guess


The score is computed as:

 The player wins if the guess is the same as the randomly chosen number, and the program ends.
 A score of one bull is accumulated for each digit in the guess that equals the corresponding digit in the randomly chosen initial number.
 A score of one cow is accumulated for each digit in the guess that also appears in the randomly chosen number, but in the wrong position.


Related tasks

   Bulls and cows/Player
   Guess the number
   Guess the number/With Feedback
   Mastermind


input   ← {⍞←'Guess: ' ⋄ 7↓⍞}
output  ← {⎕←(↑'Bulls: ' 'Cows: '),⍕⍪⍵ ⋄ ⍵}
isdigits← ∧/⎕D∊⍨⊢
valid   ← isdigits∧4=≢
guess   ← ⍎¨input⍣(valid⊣)
bulls   ← +/=
cows    ← +/∊∧≠
game    ← (output ⊣(bulls,cows) guess)⍣(4 0≡⊣)
random  ← 4∘⊣?9∘⊣
moo     ← 'You win!'⊣(random game⊢)
 