fork download
  1. foreach {sym cmd} {πŸ—£ puts πŸ—£πŸš― {puts -nonewline} πŸ“ {set ::πŸ’Ύ(cp)} πŸ“ {string length} πŸ”’πŸ”€ {format %c}} \
  2. { interp alias {} $sym {} {*}$cmd }
  3.  
  4. proc isCmd sym {
  5. expr {[info procs $sym] ne {}
  6. || [interp alias {} $sym] ne {}}
  7. }
  8.  
  9. proc πŸ”¬ {s i} {string index $s [expr {$i - 1}]}
  10. proc πŸ”€πŸ”’ c { scan $c %c }
  11.  
  12. proc πŸ€” {args} {
  13. set expr {(.*?)πŸ˜‰(.+?)(?:🀬(.+?))?$}
  14. regexp $expr $args -> cond then else
  15. set body [list if $cond $then]
  16. while {$else ne ""} {
  17. if {[regexp $expr $else -> cond then else]} {
  18. lappend body elseif $cond $then
  19. } else {
  20. lappend body else $else
  21. break
  22. }
  23. }
  24. uplevel $body
  25. }
  26.  
  27. proc ⌨ args {
  28. lassign $args {*}[switch [llength $args] {
  29. 1 { list var }
  30. 2 { list prompt var }
  31. default { error }
  32. }]
  33. if {[info exists prompt]} { πŸ—£πŸš― $prompt; flush stdout }
  34. upvar $var x; set x [gets stdin]
  35. }
  36. proc πŸͺ£ {var = args} {
  37. upvar $var x
  38. set x [if {[llength $args] > 1} \
  39. { uplevel "expr $args" } \
  40. else { join $args }]
  41. }
  42.  
  43. proc 🧊 {name code {start 0}} {
  44. array unset ::πŸ’Ύ
  45. set i 0; foreach line [split $code "\n"] {
  46. if {![llength $line]} continue
  47. if {![isCmd [set fst [lindex $line 0]]]} {
  48. set ::πŸ’Ύ(tag,$fst) $i
  49. set line [join [lrange $line 1 end] " "]
  50. }
  51. set ::πŸ’Ύ(code,$i) $line; incr i
  52. }
  53. πŸš€ $start
  54. }
  55.  
  56. proc 🀸 tag {
  57. if {![string is integer $tag]} \
  58. { set tag [set ::πŸ’Ύ(tag,$tag)] }
  59. πŸ“ $tag
  60. }
  61.  
  62. proc πŸš€ tag {
  63. 🀸 $tag
  64. while {[info exists ::πŸ’Ύ(code,[πŸ“])]} {
  65. set code [set ::πŸ’Ύ(code,[πŸ“])]; incr ::πŸ’Ύ(cp)
  66. uplevel $code
  67. }
  68. }
  69.  
  70. proc πŸͺ¬ {var args} {
  71. upvar $var x
  72. expr {[info exists x] && $x ne {} ? $x : [lindex $args end]}
  73. }
  74.  
  75. proc πŸŒ€ {var = from -> to {by {}} {step 1}} {
  76. upvar $var i; upvar #0 πŸ’Ύ s
  77. if { [πŸͺ¬ s(πŸŒ€,$var,tag)] ne [πŸ“] } {
  78. foreach {k v} [list tag [πŸ“] step $step to $to] \
  79. { set s(πŸŒ€,$var,$k) $v }
  80. set i $from
  81. }
  82. }
  83.  
  84. proc ‴ var {
  85. upvar $var i
  86. if {$i != [set ::πŸ’Ύ(πŸŒ€,$var,to)]} {
  87. πŸͺ£ i <- $i + [set ::πŸ’Ύ(πŸŒ€,$var,step)]
  88. 🀸 [set ::πŸ’Ύ(πŸŒ€,$var,tag)]
  89. }
  90. }
  91.  
  92. # 🧊 FizzBuzz {
  93. # ☸ πŸͺ£ X ← [πŸͺ¬ X 0] + 1
  94. # πŸͺ£ S ← ""
  95. # πŸ€” $X > 42 πŸ˜‰ 🀸 πŸšͺ
  96. # πŸ€” $X % 3 == 0 πŸ˜‰ πŸͺ£ S <- fizz
  97. # πŸ€” $X % 5 == 0 πŸ˜‰ πŸͺ£ S <- ${S}buzz
  98. # πŸ—£ [πŸͺ¬ S $X]
  99. # 🀸 ☸
  100. # πŸšͺ πŸ—£ βœ‹
  101. #}
  102.  
  103. # 🧊 {Числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ} {
  104. # ⌨ "FIB N: " N
  105. # πŸͺ£ X ← 1
  106. # πŸͺ£ Y ← 1
  107.  
  108. # πŸ—£ "\n\nΠŸΠ΅Ρ€Π²Ρ‹Π΅ $N чисСл ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:"
  109. # πŸŒ€ I ← 1 β†— $N
  110. # πŸ—£ $X
  111. # πŸͺ£ Z ← $X + $Y
  112. # πŸͺ£ Y ← $X
  113. # πŸͺ£ X ← $Z
  114. # ‴ I
  115. # }
  116.  
  117. 🧊 ROT13 {
  118. ⌨ S
  119. πŸŒ€ I ← 1 β†— [πŸ“ $S]
  120. πŸͺ£ C ← [πŸ”€πŸ”’ [πŸ”¬ $S $I]]
  121. πŸ€” 97 <= $C && $C < 110 πŸ˜‰ 🀸 βž•
  122. πŸ€” 65 <= $C && $C < 78 πŸ˜‰ 🀸 βž•
  123. πŸ€” 110 <= $C && $C <= 122 πŸ˜‰ 🀸 βž–
  124. πŸ€” 78 <= $C && $C <= 90 πŸ˜‰ 🀸 βž–
  125. πŸ‘Œ πŸ—£πŸš― [πŸ”’πŸ”€ $C]
  126. ‴ I
  127. 🀸 πŸšͺ
  128.  
  129. βž• πŸͺ£ C ← $C + 13
  130. 🀸 πŸ‘Œ
  131. βž– πŸͺ£ C ← $C - 13
  132. 🀸 πŸ‘Œ
  133. πŸšͺ πŸ—£ βœ‹
  134. }
Success #stdin #stdout 0.02s 5460KB
stdin
Qba'g nsenvq bs Tylon vg jvyy srry gung naq shpx lbh hc
stdout
Don't afraid of Glyba it will feel that and fuck you upβœ‹