Skip to content

Instantly share code, notes, and snippets.

@kalabiyau
Created June 18, 2012 07:44
Show Gist options
  • Save kalabiyau/2947334 to your computer and use it in GitHub Desktop.
Save kalabiyau/2947334 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby
class GoodMan
require 'base64'
attr_accessor :abilities, :age, :message, :skills
YODA_VOID = ["YXNrZGZrYWtzZG9vd2VvaWtsc287c2RmaWhpc2p1c2Rma2hobmtraGthbnBv\nZnk5cDItOTM0bGtodHNkZms7bDtoc2RmbA==\n",
"bGFzc2xmbHNhZGdra2xhc2R0a2x0a2w7c25hc2xkdXpqcG9hc2RmaG92\n",
"cnVieSxqUXVlcnkscGhwLHRkZCxiZGQsc2NydW0sYWdpbGUsc3FsLGxpbnV4\nLGNzcw==\n",
"Y29vbG5lc3MsbmljZW5lc3MsZnJpZW5kbHluZXNzLGpveWZ1bG5lc3MsY2xl\ndmVybmVzcyxnb29kbmVzcyxwb3dlcmZ1bA==\n",
"UnVieVlvZGFBbmRXaGF0QXJlWW91TG9va2luZ0F0Pw==\n",
"ICAgX19fXyAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg\nICAgICAgICAgXy4nIDogIGAuXyAgICAgICAgICAgICAgIAogICAgICAgICAg\nICAgICAgICAgICAgICAuLS4nYC4gIDsgICAuJ2AuLS4gICAgICAgICAgIAog\nICAgICAgICAgICAgICBfXyAgICAgIC8gOiBfX18gOyAgL19fXyA7ICAgICAg\nIF9fICAKICAgICAgICAgICAgICwnXyAiIi0tLjpfXzsiLi0uIjs6IDoiLi0u\nIjpfXzsuLS0iIiBfYCwKICAgICAgICAgICAgIDonIGAudCIiLS0uLiAnPEAu\nYDtfICAnLEA+YCAuLi0tIiJqLicgYDsKICAgICAgICAgICAgICAgICAgYDot\nLi5fSiAnLS4tJ0xfXyBgLS0gJyBMXy4uLTsnICAgICAKICAgICAgICAgICAg\nICAgICAgICAiLS5fXyA7ICAuLSIgICItLiAgOiBfXy4tIiAgICAgICAKICAg\nICAgICAgICAgICAgICAgICAgICAgTCAnIC8uLS0tLS0tLiAnIEogICAgICAg\nICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgIi0uICAgIi0tIiAgIC4t\nIiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBfXy5sIi06\nX0pMXzstIjsuX18gICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAu\nLWovJy47ICA7IiIiIiAgLyAuJyItLiAgICAgICAgCiAgICAgICAgICAgICAg\nICAgICAuJyAvOmAuICItLjogICAgIC4tIiAuJzsgIGAuICAgICAgCiAgICAg\nICAgICAgICAgICAuLSIgIC8gOyAgIi0uICItLi4tIiAuLSIgIDogICAgIi0u\nICAgCiAgICAgICAgICAgICAuKyItLiAgOiA6ICAgICAgIi0uX18uLSIgICAg\nICA7LS5fICAgICAKICAgICAgICAgICAgIDsgICBgLjsgOyAgICAgICAgICAg\nICAgICAgICAgOiA6ICIrLiA7IAogICAgICAgICAgICAgOiAgOyAgIDsgOyAg\nICAgICAgICAgICAgICAgICAgOiA7ICA6IDogCiAgICAgICAgICAgICA7ICA6\nICAgOyA6ICAgICAgICAgICAgICAgICAgICA7OiAgIDsgIDogCiAgICAgICAg\nICAgIDogICA7ICA6ICA7ICAgICAgICAgICAgICAgICAgOiA7ICAvICA6OiAK\nICAgICAgICAgICAgOyAgOyA6ICAgOyA6ICAgICAgICAgICAgICAgICAgOyAg\nIDogICA7OiAKICAgICAgICAgICAgOiAgOiAgOyAgOiAgOyAgICAgICAgICAg\nICAgICA6IDogIDsgIDogOyAKICAgICAgICAgICAgOyAgICA6ICAgOyA6ICAg\nICAgICAgICAgICAgIDsgOyAgICAgOyA7IAogICAgICAgICAgICA6IGAuIi07\nICAgOiAgOyAgICAgICAgICAgICAgOiAgOyAgICAvICA7IAogICAgICAgICAg\nICAgOyAgICAtOiAgIDsgOiAgICAgICAgICAgICAgOyAgOiAuLSIgICA6IAog\nICAgICAgICAgICAgOiAgICAgICA6ICA7ICAgICAgICAgICAgOiAuLSIgICAg\nICA6IAogICAgICAgICAgICAgIDtgLiAgICAgIDsgOiAgICAgICAgICAgIDsu\nJ18uLi0tICAvIDsgCiAgICAgICAgICAgICAgOiAgIi0uICAiLTogIDsgICAg\nICAgICAgOi8uIiAgICAgIC4nICA6CiAgICAgICAgICAgICAgICAgICAgICAg\nICA6ICAgICAgICAgIDsvICBfXyAgICAgICAgOgogICAgICAgICAgICAgICAg\nICAgICAgIC4tYC4gICAgICAgIC90LSIiICAiOi0rLiAgIDoKICAgICAgICAg\nICAgICAgICBgLiAgLi0iICAgIGBsICAgIF9fLyAvYC4gOiAgOyA7ICAgOwog\nICAgICAgICAgICAgICAgICAgICAgLi0iIC4tIi0uLSIgIC4nIC4naiAgIC8g\nICA7LyAKICAgICAgICAgICAgICAgICAgICAgLyAuLSIgICAvLiAgICAgLicu\nJyA7XzonICAgIDsgIAogICAgICAgICAgICAgICAgICAgICA6LSIiLS5gLi8t\nLicgICAgIC8gICAgYC5fX18uJyAgIAogICAgICAgICAgICAgICAgICAgICAg\nICAgICAgYHQgIC5fICAvICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAiLS50LS5fOicgICAgICAgICAgICAgICAgCg==\n",
"QW50b24sIGknYW0gaGFwcHkgdG8gYmUgeW91ciBmcmllbmQgYW5kIHlvdXIg\ncnVieSBwYWRhd2FuISBCZSBoYXBweSwgbGl2ZSBsb25nIGFuZCBwcm9zcGVy\nICEgSGFwcHkgMjUgYmlydGhkYXkh\n",
"ICAgICAgICBOYW1lOiAlcwogICAgICAgIExhc3QgTmFtZTogJXMKICAgICAg\nICBTa2lsbHM6ICVzCiAgICAgICAgQWJpbGl0aWVzOiAlcwogICAgICAgIEFn\nZTogJXMKICAgICAgICBOaWNrbmFtZTogJXMK\n"
]
NONSENSE_LOOKUP = [2+42+2-2+4-42-4, 99%3+2/1+1]
YODA_PASSPORT = Base64.decode64(YODA_VOID[7])
def initialize
@name = []
@last_name = []
@abilities = []
@skills = ""
@age = ""
@message = ""
end
def name
use_force(@name)
end
def last_name
use_force(@last_name)
end
def grant_force!
get_high_priest_of_jedi_blessing! if self.class.name[0..3].downcase == "good"
end
def calculate_jedi_age
stardate = 2012
@age = stardate - 1987
end
def nickname
Base64.decode64(YODA_VOID[4])[0..7]
end
def bow!
puts Base64.decode64(YODA_VOID[5])
end
def send_greetings
puts Base64.decode64(YODA_VOID[6])
end
private
def use_force(what)
case what
when @name
where_to_look = YODA_VOID[0]
genesis_pattern = [0, 36, 57, 10, 42]
else @last_name
where_to_look = YODA_VOID[1]
genesis_pattern = [2, 34, 31, 34, 25, 17, 34, 41]
end
genesis_pattern.each do |yo_index|
what << Base64.decode64(where_to_look)[yo_index]
end
what.join("").capitalize
end
def get_high_priest_of_jedi_blessing!
@skills = Base64.decode64 YODA_VOID[NONSENSE_LOOKUP.first]
@abilities = Base64.decode64 YODA_VOID[NONSENSE_LOOKUP.last]
end
end
jedi = GoodMan.new
jedi.grant_force!
jedi.calculate_jedi_age
puts GoodMan::YODA_PASSPORT % [jedi.name, jedi.last_name, jedi.skills, jedi.abilities, jedi.age, jedi.nickname]
jedi.bow!
jedi.send_greetings
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment