Skip to content

Instantly share code, notes, and snippets.

@edvardm
Last active August 4, 2016 15:03
Show Gist options
  • Save edvardm/a98b4e4bc8e3ef7af4433b35743800c9 to your computer and use it in GitHub Desktop.
Save edvardm/a98b4e4bc8e3ef7af4433b35743800c9 to your computer and use it in GitHub Desktop.
peli-1.rb
AAKKOSET = ('a'..'z').to_a
AAKKOS_LKM = 20
def jaa_aakkoset
taulukko = []
AAKKOS_LKM.times do
taulukko.push(AAKKOSET.sample)
end
taulukko
end
def näytä_käsi(merkit)
puts
puts "Sinulla on kädessäsi " + merkit.sort.join(', ')
end
def lue_sanasto(tiedosto)
rivit = File.readlines(tiedosto).map do |rivi|
rivi.strip.downcase
end
puts "Luettiin #{rivit.size} sanaa"
rivit.reject do |sana|
sana.size <= 1
end
end
def onko_sana?(syöte, sanasto)
sanasto.include?(syöte.downcase)
end
def tarkista_sana(syöte, sanasto)
if onko_sana?(syöte, sanasto)
puts "Sana löytyi"
true
else
puts "Ei osumaa sanalla " + syöte
false
end
end
def poista_aakkosista(aakkoset, merkki)
kopio = aakkoset.dup
indeksi = kopio.index(merkki)
if indeksi
kopio.delete_at(indeksi)
end
kopio
end
def muodostettavissa_aakkosista?(alkup_aakkoset, sana)
aakkoset = alkup_aakkoset.dup
sana.chars.each do |merkki|
temp = poista_aakkosista(aakkoset, merkki)
if temp == aakkoset
return false
end
aakkoset = temp
end
return true
end
def laske_pisteet(sana)
sana.size**2
end
### Pääohjelma
aakkoset = jaa_aakkoset
# sanasto = lue_sanasto('sanasto.txt')
sanasto = lue_sanasto('/usr/share/dict/words')
pisteet = 0
fail "laske_pisteet ei toimi" if laske_pisteet('cat') != 9
loop do
näytä_käsi(aakkoset)
puts "Sanasto: " + sanasto[0..9].join(', ')
print "Kirjoita sana, tai piste (.) lopettaaksesi ja <Enter>: "
syöte = STDIN.gets.strip
break if syöte == "."
if tarkista_sana(syöte, sanasto) &&
muodostettavissa_aakkosista?(aakkoset, syöte) &&
syöte.size > 1
pisteet = pisteet + laske_pisteet(syöte)
# poistetaan muodostettu sana
syöte.chars.each do |merkki|
aakkoset = poista_aakkosista(aakkoset, merkki)
end
end
puts "Sinun pisteesi ovat nyt: " + pisteet.to_s
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment