Create a gist now

Instantly share code, notes, and snippets.

@qrohlf /helloworld
Last active Jul 26, 2016

Embed
Ruby Hello World
  = 1
   =  + 
    =   *  + 
     =    *  
      =
[     *(   +  )+  ,
        =     *    + ,
         =     *    +    -  ,
        ,
        =        +    ,
    *  +    +  ,
    *    -  *    +   +  ,
       ,
       + +  ,
        ,
    *    ,     + +  ,
    ]
puts      .map(&:chr).join
@pboling

This comment has been minimized.

Show comment
Hide comment
@pboling

pboling Dec 28, 2015

That is not valid Ruby, failure on first line.

∴ irb
>>       = 1
SyntaxError: (irb):1: syntax error, unexpected '='
      = 1
       ^

I am sure it is based on something that did work for someone somehow, anyone know how to fix it?

pboling commented Dec 28, 2015

That is not valid Ruby, failure on first line.

∴ irb
>>       = 1
SyntaxError: (irb):1: syntax error, unexpected '='
      = 1
       ^

I am sure it is based on something that did work for someone somehow, anyone know how to fix it?

@BatmanAoD

This comment has been minimized.

Show comment
Hide comment
@BatmanAoD

BatmanAoD Dec 28, 2015

@pboling Yes, you need to ensure that you're actually feeding the invisible unicode characters to the interpreter; you may be inadvertently stripping them during the copy-and-paste. (It appears that some or all online interpreters do this.) See this StackOverflow question.

@pboling Yes, you need to ensure that you're actually feeding the invisible unicode characters to the interpreter; you may be inadvertently stripping them during the copy-and-paste. (It appears that some or all online interpreters do this.) See this StackOverflow question.

@BatmanAoD

This comment has been minimized.

Show comment
Hide comment
@BatmanAoD

BatmanAoD Dec 28, 2015

It would be interesting to know if there are particular versions of Ruby that don't treat special whitespace unicode points as valid identifier characters. I think a Ruby feature-request to make future versions of Ruby treat all unicode whitespace as real whitespace (i.e. assume it indicates a separation between two tokens but otherwise ignore it) would probably be helpful.

It would be interesting to know if there are particular versions of Ruby that don't treat special whitespace unicode points as valid identifier characters. I think a Ruby feature-request to make future versions of Ruby treat all unicode whitespace as real whitespace (i.e. assume it indicates a separation between two tokens but otherwise ignore it) would probably be helpful.

@mvidner

This comment has been minimized.

Show comment
Hide comment
@mvidner

mvidner Jan 29, 2016

Nice! Here's a readability trick:

ruby -p -e '$_.gsub!(/ +/," ").gsub!(/\u00a0+/){|m| "v#{m.size}"}' < helloworld 

prints

v1 = 1
v2 = v1+v1
v3 = v2*v2+v1
v4 = v3*v2
v5 = 
 [v4 *(v3+v2)+v2, 
 v7 = v4*v4+v1, 
 v8 = v4*v4+v4-v2, 
 v8, 
 v7 = v7+v4,
 v4*v2+v4+v2, 
 v4*v4-v2*v4+v3+v2, 
 v7, 
 v7+v1+v2, 
 v8, 
 v4*v4, v4+v1+v2, 
 v4]
puts v5.map(&:chr).join

mvidner commented Jan 29, 2016

Nice! Here's a readability trick:

ruby -p -e '$_.gsub!(/ +/," ").gsub!(/\u00a0+/){|m| "v#{m.size}"}' < helloworld 

prints

v1 = 1
v2 = v1+v1
v3 = v2*v2+v1
v4 = v3*v2
v5 = 
 [v4 *(v3+v2)+v2, 
 v7 = v4*v4+v1, 
 v8 = v4*v4+v4-v2, 
 v8, 
 v7 = v7+v4,
 v4*v2+v4+v2, 
 v4*v4-v2*v4+v3+v2, 
 v7, 
 v7+v1+v2, 
 v8, 
 v4*v4, v4+v1+v2, 
 v4]
puts v5.map(&:chr).join
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment