[RUBY] Fizzbuzz mit ASCII-Kunst.

Dieses Mal las ich ein wundervolles Buch mit dem Titel Transcendental Technique Programming, also habe ich FizzBuzz mit ASCII Art ausprobiert. Die Buchstaben 0x6d61 werden in das Quadrat geschrieben. Es ist ziemlich schwer zu sehen ...

eval(%w(1.upto(100)do|n|s=n;if(n%15==0);s="FizzBuzz
";e    lsi f(n% 5==   0);s="Buz z";els   if(n% 3==0
); s="F izz "; end ;puts(s);end ;;;; ;;;;;;;;  ;;;;
;; ;  ; ;;;; ;;;;;     ;;;;;    ;;;;     ;;;;; ;;;;
;; ;;;; ;; ;; ;;;; ;;; ;;; ;;;; ;;;; ;;; ;;;;; ;;;;
;;;   ;;; ;;;; ;;;;   ;;;;;;   ;;;;;;   ;;;;;; ;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;)*"")

Kommentar

Ich werde den Code kurz erklären. Zuerst der Hauptcode von fizzbuzz im % w``` Teil Es wird in ein Array zerlegt. % w kann durch Schreiben von % w (wei wei wei) `` in ["wei," wei "," wei "] konvertiert werden. Dank dieses Mechanismus können Sie Leerzeichen in Ihren Code aufnehmen. Als nächstes wird das Array am *" " Teil zu einem String rekombiniert. Der endgültige Code zu diesem Zeitpunkt ist unten.

"1.upto(100)do|n|s=n;if(n%15==0);s=\"FizzBuzz\";elsif(n%5==0);s=\"Buzz\";elsif(n%3==0);s=\"Fizz\";end;puts(s);end;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"

Schließlich mache ich das mit eval.

Ich habe den folgenden Code geschrieben, um dieses Ruby-Programm zu erstellen. Ich beziehe mich fast auf den Code von "Transcendental Skill Programming".

ascii = """
###################################################
###    ### #### ###   ######### ######   ##### ####
## #### ### ## ### ############ #### ########  ####
## #  # #### #####     #####    ####     ##### ####
## #### ## ## #### ### ### #### #### ### ##### ####
###   ### #### ####   ######   ######   ###### ####
###################################################
 """
puts ascii.length
code = <<'END'
1.upto(100) do |n|
s = n;
if(n%15==0);
  s="FizzBuzz";
elsif(n%5==0);
  s="Buzz";
elsif(n%3==0);
    s="Fizz";
end;
puts(s);
end;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
END
p code.length
code = code.split.join
code = 'eval(%w(' + code + ')*"")'
code = ascii.gsub("#") { code.slice!(0,1)}
puts code

Als Ablauf wird Code auf eine Zeile ohne Leerzeichen gesetzt, eval wird verkettet und # in ASCII-Grafik wird durch Code ersetzt. Bitte beachten Sie, dass die Länge des Codes, den Sie ausführen möchten, mit der ASCII-Grafik übereinstimmen muss, also im obigen Code Ich fülle mit;

Zum Schluss werde ich den Link von Paiza setzen. FizzBuzz

Recommended Posts

Fizzbuzz mit ASCII-Kunst.
ASCII-Kunst in Java
FizzBuzz mit Stream ausgeben
Logik zum Zeichnen eines Kreises auf der Konsole mit ASCII-Grafik