Jump to content

Nim game: Difference between revisions

m
alphabetized entries ;D
(add javascript (browser))
m (alphabetized entries ;D)
Line 419:
 
Computer wins!
</pre>
 
=={{header|Go}}==
<lang go>package main
 
import (
"bufio"
"fmt"
"os"
"strconv"
)
 
func showTokens(tokens int) {
fmt.Println("Tokens remaining", tokens, "\n")
}
 
func main() {
tokens := 12
scanner := bufio.NewScanner(os.Stdin)
for {
showTokens(tokens)
fmt.Print(" How many tokens 1, 2 or 3? ")
scanner.Scan()
if scerr := scanner.Err(); scerr != nil {
fmt.Println("Error reading standard input:", scerr)
return
}
t, err := strconv.Atoi(scanner.Text())
if err != nil || t < 1 || t > 3 {
fmt.Println("\nMust be a number between 1 and 3, try again.\n")
} else {
ct := 4 - t
s := "s"
if ct == 1 {
s = ""
}
fmt.Print(" Computer takes ", ct, " token", s, "\n\n")
tokens -= 4
}
if tokens == 0 {
showTokens(0)
fmt.Println(" Computer wins!")
return
}
}
}</lang>
 
{{out}}
Sample game:
<pre>
Tokens remaining 12
 
How many tokens 1, 2 or 3? 2
Computer takes 2 tokens
 
Tokens remaining 8
 
How many tokens 1, 2 or 3? 4
 
Must be a number between 1 and 3, try again.
 
Tokens remaining 8
 
How many tokens 1, 2 or 3? 1
Computer takes 3 tokens
 
Tokens remaining 4
 
How many tokens 1, 2 or 3? 3
Computer takes 1 token
 
Tokens remaining 0
 
Computer wins!
</pre>
 
Line 509 ⟶ 583:
 
Computer wins.
</pre>
 
 
 
=={{header|Lua}}==
<lang Lua>
tokens = 12
 
print("Nim Game\n")
print("Starting with " .. tokens .. " tokens.\n\n")
 
function printRemaining()
print(tokens .. " tokens remaining.\n")
end
 
function playerTurn(take)
take = math.floor(take)
if (take < 1 or take > 3) then
print ("\nTake must be between 1 and 3.\n")
return false
end
tokens = tokens - take
print ("\nPlayer takes " .. take .. " tokens.")
printRemaining()
return true
end
 
function computerTurn()
take = tokens % 4
tokens = tokens - take
print("Computer takes " .. take .. " tokens.")
printRemaining()
end
 
while (tokens > 0) do
io.write("How many tokens would you like to take?: ")
if playerTurn(io.read("*n")) then
computerTurn()
end
end
 
print ("Computer wins.")
</lang>
 
{{out}}
Sample game output:
<pre>
Nim Game
 
Starting with 12 tokens.
 
 
How many tokens would you like to take?: 3
Player takes 3 tokens.
9 tokens remaining.
 
Computer takes 1 tokens.
8 tokens remaining.
 
How many tokens would you like to take?: 4
Take must be between 1 and 3.
 
How many tokens would you like to take?: 1
Player takes 1 tokens.
7 tokens remaining.
 
Computer takes 3 tokens.
4 tokens remaining.
 
How many tokens would you like to take?: 2
Player takes 2 tokens.
2 tokens remaining.
 
Computer takes 2 tokens.
0 tokens remaining.
 
Computer wins.
</pre>
 
=={{header|Go}}==
<lang go>package main
 
import (
"bufio"
"fmt"
"os"
"strconv"
)
 
func showTokens(tokens int) {
fmt.Println("Tokens remaining", tokens, "\n")
}
 
func main() {
tokens := 12
scanner := bufio.NewScanner(os.Stdin)
for {
showTokens(tokens)
fmt.Print(" How many tokens 1, 2 or 3? ")
scanner.Scan()
if scerr := scanner.Err(); scerr != nil {
fmt.Println("Error reading standard input:", scerr)
return
}
t, err := strconv.Atoi(scanner.Text())
if err != nil || t < 1 || t > 3 {
fmt.Println("\nMust be a number between 1 and 3, try again.\n")
} else {
ct := 4 - t
s := "s"
if ct == 1 {
s = ""
}
fmt.Print(" Computer takes ", ct, " token", s, "\n\n")
tokens -= 4
}
if tokens == 0 {
showTokens(0)
fmt.Println(" Computer wins!")
return
}
}
}</lang>
 
{{out}}
Sample game:
<pre>
Tokens remaining 12
 
How many tokens 1, 2 or 3? 2
Computer takes 2 tokens
 
Tokens remaining 8
 
How many tokens 1, 2 or 3? 4
 
Must be a number between 1 and 3, try again.
 
Tokens remaining 8
 
How many tokens 1, 2 or 3? 1
Computer takes 3 tokens
 
Tokens remaining 4
 
How many tokens 1, 2 or 3? 3
Computer takes 1 token
 
Tokens remaining 0
 
Computer wins!
</pre>
 
Line 763 ⟶ 683:
 
Computer wins!
</pre>
 
=={{header|Lua}}==
<lang Lua>
tokens = 12
 
print("Nim Game\n")
print("Starting with " .. tokens .. " tokens.\n\n")
 
function printRemaining()
print(tokens .. " tokens remaining.\n")
end
 
function playerTurn(take)
take = math.floor(take)
if (take < 1 or take > 3) then
print ("\nTake must be between 1 and 3.\n")
return false
end
tokens = tokens - take
print ("\nPlayer takes " .. take .. " tokens.")
printRemaining()
return true
end
 
function computerTurn()
take = tokens % 4
tokens = tokens - take
print("Computer takes " .. take .. " tokens.")
printRemaining()
end
 
while (tokens > 0) do
io.write("How many tokens would you like to take?: ")
if playerTurn(io.read("*n")) then
computerTurn()
end
end
 
print ("Computer wins.")
</lang>
 
{{out}}
Sample game output:
<pre>
Nim Game
 
Starting with 12 tokens.
 
 
How many tokens would you like to take?: 3
Player takes 3 tokens.
9 tokens remaining.
 
Computer takes 1 tokens.
8 tokens remaining.
 
How many tokens would you like to take?: 4
Take must be between 1 and 3.
 
How many tokens would you like to take?: 1
Player takes 1 tokens.
7 tokens remaining.
 
Computer takes 3 tokens.
4 tokens remaining.
 
How many tokens would you like to take?: 2
Player takes 2 tokens.
2 tokens remaining.
 
Computer takes 2 tokens.
0 tokens remaining.
 
Computer wins.
</pre>
 
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.