Cette fois, j'ai lu un livre merveilleux appelé Programmation de Technique Transcendantale, alors j'ai essayé FizzBuzz avec l'Art ASCII. Les lettres 0x6d61 sont écrites dans le carré. C'est assez difficile à voir ...
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 ;;;; ;;;;;;;; ;;;;
;; ; ; ;;;; ;;;;; ;;;;; ;;;; ;;;;; ;;;;
;; ;;;; ;; ;; ;;;; ;;; ;;; ;;;; ;;;; ;;; ;;;;; ;;;;
;;; ;;; ;;;; ;;;; ;;;;;; ;;;;;; ;;;;;; ;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;)*"")
Je vais expliquer brièvement le code. Tout d'abord, le code principal de fizzbuzz dans la partie
% w```
Il est décomposé en un tableau. % w peut être converti en ["wei," wei "," wei "] en écrivant% w (wei wei wei)
.
Grâce à ce mécanisme, vous pouvez inclure des espaces dans votre code. Ensuite, le tableau est recombiné en une chaîne de caractères à la partie *" "
.
Le code final à ce stade est ci-dessous.
"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
Enfin, je fais cela avec eval.
J'ai écrit le code suivant pour créer ce programme ruby. Je me réfère presque au code de "programmation de compétences transcendantales".
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
En tant que flux, le code est défini sur une ligne sans espaces, eval est concaténé et # dans l'art ASCII est remplacé par du code. Veuillez noter que la longueur du code que vous souhaitez exécuter doit être la même que celle de l'art ASCII, donc dans le code ci-dessus Je remplis avec;.
Enfin, je mettrai le lien de paiza. FizzBuzz