Data update
This commit is contained in:
parent
4bb20c9b71
commit
cbaf4c4b64
12390 changed files with 318560 additions and 27248 deletions
40
Task/Wordiff/Crystal/wordiff.cr
Normal file
40
Task/Wordiff/Crystal/wordiff.cr
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
require "levenshtein"
|
||||
|
||||
words = File.read_lines("unixdict.txt").to_set
|
||||
|
||||
print "Enter player names separated by spaces: "
|
||||
players = gets.not_nil!.split
|
||||
|
||||
current = words.select { |w| 3 <= w.size <= 4 }.sample
|
||||
used = Set.new [current]
|
||||
|
||||
puts "Starting word is '#{current}'!"
|
||||
|
||||
players.cycle.skip(players.size-1).each_cons_pair do |previous, player|
|
||||
print "#{player}, give me a wordiff from '#{current}': "
|
||||
guess = gets.not_nil!
|
||||
if guess.in?(words) && !guess.in?(used) && (dist = Levenshtein.distance(current, guess)) == 1
|
||||
puts "Good!"
|
||||
used << guess
|
||||
current = guess
|
||||
else
|
||||
possible = words.select {|w|
|
||||
!w.in?(used) && (w.size - guess.size).abs <= 1 && Levenshtein.distance(current, w) == 1
|
||||
}
|
||||
if !guess.in? words
|
||||
puts "That word isn't in the dictionary."
|
||||
elsif guess.in? used
|
||||
puts "That word was already used."
|
||||
else
|
||||
puts "That word isn't a wordiff from '#{guess}'."
|
||||
end
|
||||
puts "You LOSE, #{player}!"
|
||||
if possible.size > 0
|
||||
puts "You could have entered: #{possible.sort.join(", ")}"
|
||||
else
|
||||
puts "(But you didn't have any word left to enter. Brilliant move by #{previous}!)"
|
||||
end
|
||||
puts "#{previous} WINS!"
|
||||
break
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue