Created
June 16, 2015 17:45
-
-
Save simonszu/d326129774b07124d454 to your computer and use it in GitHub Desktop.
Attempt to create an Ook/Hut/Brainfuck-Interpreter in Ruby
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #! /usr/bin/env ruby | |
| code = "Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut! Hut? Hut. Hut? Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut? Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut? Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut? Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut? Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut? Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut? Hut. Hut? Hut. Hut? Hut. Hut? Hut. Hut? Hut. Hut? Hut. Hut! Hut! Hut? Hut! Hut. Hut? Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut! Hut. Hut. Hut? Hut. Hut. Hut. Hut. Hut. Hut. Hut! Hut. Hut. Hut? Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut! Hut. Hut. Hut? Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut! Hut. Hut? Hut. Hut? Hut. Hut! Hut! Hut! Hut! Hut! Hut! Hut! Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut! Hut. Hut. Hut? Hut! Hut! Hut! Hut! Hut! Hut! Hut! Hut. Hut? Hut. Hut! Hut! Hut! Hut. Hut! Hut! Hut! Hut! Hut! Hut! Hut! Hut! Hut! Hut! Hut! Hut. Hut. Hut? Hut. Hut. Hut. Hut. Hut! Hut. Hut. Hut? Hut. Hut? Hut. Hut. Hut. Hut. Hut! Hut. Hut. Hut? Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut! Hut. Hut? Hut. Hut? Hut. Hut? Hut. Hut! Hut. Hut! Hut. Hut? Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut. Hut! Hut. Hut. Hut? Hut. Hut? Hut! Hut. Hut? Hut. Hut? Hut. Hut! Hut! Hut! Hut! Hut! Hut! Hut! Hut! Hut! Hut! Hut! Hut. Hut. Hut. Hut! Hut. Hut. Hut? Hut! Hut! Hut! Hut! Hut! Hut. Hut. Hut. Hut. Hut. Hut! Hut. Hut? Hut. Hut! Hut. Hut. Hut? Hut. Hut. Hut! Hut." | |
| keyword = "Hut" | |
| # Remove all keywords and whitespaces from the code, so that only punctuation marks are left | |
| code.gsub!(keyword, "") | |
| code.gsub!(/\s+/, "") | |
| # Converts the codestring to an array | |
| newCode = code.split "" | |
| # Defines a new array where to store the commands | |
| codeArr = [] | |
| # Splits the remaining code in groups of 2 and appends them to the array of commands | |
| newCode.each_index do |i| | |
| if i.even? | |
| codeArr.push(newCode[i]+newCode[i-1]) | |
| end | |
| end | |
| # Defines an Array where to put the calculated values | |
| valueArr = [] | |
| # Cycles through the codeArr and interprets the Commands | |
| codeArr.each do |cmd| | |
| if cmd.eql? ".." | |
| puts "Increments value" | |
| elsif cmd.eql? "!!" | |
| puts "Decrements value" | |
| elsif cmd.eql? ".?" | |
| puts "Pointer to right" | |
| elsif cmd.eql? "?." | |
| puts "Pointer to left" | |
| elsif cmd.eql? "!?" | |
| puts "Start loop" | |
| elsif cmd.eql? "?!" | |
| puts "End loop" | |
| elsif cmd.eql? "!." | |
| puts "Print value" | |
| elsif cmd.eql? ".!" | |
| puts "Read value" | |
| else | |
| puts "Unknown command" | |
| end | |
| end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment