• Stars
    star
    119
  • Rank 297,930 (Top 6 %)
  • Language
    Ruby
  • Created over 11 years ago
  • Updated over 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Spinning Globe in a Ruby Quine

qlobe

This quine was presented at RubyConf by Yusuke Endoh. The globe turns 45 degrees when executed and will come around eight times. You can make it any-degree turn by giving an integer as a command-line argument. The original blog post is located here.

How to run

To run this code just put this line to terminal:

clear; for ((;;)); do for i in {1..360}; do tput cup 0 0; ruby qlobe.rb $i; sleep 0.1; done; done;

This will output globe that will rotate in your terminal:

>                  v=0000;eval$s=%q~d=%!^Lcf<LK8,                  _@7gj*LJ=c5nM)Tp1g0%Xv.,S[<>YoP
>                  4ZojjV)O>qIH1/n[|2yE[>:ieC       "%.#%  :::##"       97N-A&Kj_K_><wS5rtWk@*a+Y5
>                  yH?b[F^e7C/56j|pmRe+:)B     "##%      ::##########"     O98(Zh)'Iof*nm.,$C5Nyt=
>                  PPu01Avw^<IiQ=5$'D-y?    "##:         ###############"    g6`YT+qLw9k^ch|K'),tc
>                  6ygIL8xI#LNz3v}T=4W    "#            #.   .####:#######"    lL27FZ0ij)7TQCI)P7u
>                  }RT5-iJbbG5P-DHB<.   "              ##### # :############"   R,YvZ_rnv6ky-G+4U'
>                  $*are@b4U351Q-ug5   "              #######################"   00x8RR%`Om7VDp4M5
>                  PFixrPvl&<p[]1IJ   "              ############:####  %#####"   EGgDt8Lm#;bc4zS^
>                  y]0`_PstfUxOC(q   "              .#############:##%   .##  ."   /,}.YOIFj(k&q_V
>                  zcaAi?]^lCVYp!;  " %%            .################.     #.   "  ;s="v=%04o;ev"%
>                  (;v=(v-($*+[45,  ":####:          :##############%       :   "  ])[n=0].to_i;)%
>                  360)+"al$s=%q#{  "%######.              #########            "  ;;"%c"%126+$s<<
>                  126}";d.gsub!(/  "##########.           #######%             "  |\s|".*"/,"");;
>                  require"zlib"||  "###########           :######.             "  ;d=d.unpack"C*"
>                  d.map{|c|n=(n||  ":#########:           .######: .           "  )*90+(c-2)%91};
>                  e=["%x"%n].pack   " :#######%           :###### #:          "   &&"H*";e=Zlib::
>                  Inflate.inflate(   "  ######%           .####% ::          "   &&e).unpack("b*"
>                  )[0];22.times{|y|   "  ####%             %###             "   ;w=(Math.sqrt(1-(
>                  (y*2.0-21)/22)**(;   " .###:             .#%             "   ;2))*23).floor;(w*
>                  2-1).times{|x|u=(e+    " %##                           "    )[y*z=360,z]*2;u=u[
>                  90*x/w+v+90,90/w];s[(    " #.                        "    ;y*80)+120-w+x]=(""<<
>                  32<<".:%#")[4*u.count((     " .                   "     ;"0"))/u.size]}};;puts\
>                  s+";_ The Qlobe#{" "*18+ (       "#  :#######"       ;"Copyright(C).Yusuke End\
>                  oh, 2010")}";exit~;_ The Qlobe                  Copyright(C).Yusuke Endoh, 2010