Skip to content

Instantly share code, notes, and snippets.

@borgand
Created February 10, 2016 18:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save borgand/95222277d2630705019b to your computer and use it in GitHub Desktop.
Save borgand/95222277d2630705019b to your computer and use it in GitHub Desktop.
Hangman implemented in 1 line of Ruby. Probably the ugliest piece of code I have written, but I was intrigued (and inspired) by the [Hangman implemented in 3 lines of Python](https://gist.github.com/danverbraganza/3320ccedd0eef2f2b88d)
->(license,word,scaffold,man,f){puts "You #{f.(word,scaffold,[],10,man,f) ? 'win!' : "loose!\n" + scaffold%man}\nWord was: #{word}"}.( 'https://opensource.org/licenses/MIT',File.read('/usr/share/dict/words').split.shuffle.find{|w| w=~/^\w+$/}.upcase,"|======\n| |\n| %4$s %1$s %6$s\n| %3$s%2$s%5$s\n| %7$s %9$s\n| %8$s %10$s\n|",%w(O T - \\ - / / | \\ | ),->(word,scaffold,guesses,guesses_left,man,f){[$stdout.print("#{guesses.join(', ')}(#{guesses_left} guesses left)\n #{scaffold%(man.take(10-guesses_left) + [' '] * guesses_left)}\n #{word.gsub(/./){|c| (guesses.include?(c) ? c : '_') + ' '}}: "), ->(guess){[(guesses<<guess).uniq!,word.include?(guess) && guesses_left || guesses_left -= 1][1]}.(gets[0].chomp.upcase)][1] > 0 ? (word.each_char.all?{|c| guesses.include?(c)} ? true : f.(word,scaffold,guesses,guesses_left,man,f)) : false})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment