set symbols {π£ puts β if β else}
foreach {sym cmd} $symbols \
{ interp alias {} $sym {} $cmd }
proc π€ {args} {
set expr {(.*?)π(.+?)(?:π€¬(.+?))?$}
regexp $expr $args -> cond then else
set body [list if $cond $then]
while {$else ne ""} {
if {[regexp $expr $else -> cond then else]} {
lappend body elseif $cond $then
} else {
lappend body else $else
break
}
}
uplevel $body
}
proc π {from dir to -> var body} {
upvar $var i
lassign [switch $dir {
β { list < 1 }
β { list > -1 }
}] cmp step
for {set i $from} "\$i $cmp \$to" {incr i $step} {
uplevel $body
}
}
##############
# π§ΠΠ»ΡΠ±ΠΎΠΊΠΎΠ΄ #
##############
π 1 β 100 -> x {
π€ $x % 3 + $x % 5 == 0 \
π π£ fizzbuzz \
π€¬ $x % 3 == 0 π π£ fizz \
π€¬ $x % 5 == 0 π π£ buzz \
π€¬ π£ $x
}
c2V0IHN5bWJvbHMge/Cfl6MgcHV0cyDinJQgaWYg4p2MIGVsc2V9CmZvcmVhY2gge3N5bSBjbWR9ICRzeW1ib2xzIFwKICAgIHsgaW50ZXJwIGFsaWFzIHt9ICRzeW0ge30gJGNtZCB9Cgpwcm9jIPCfpJQge2FyZ3N9IHsKICAgIHNldCBleHByIHsoLio/KfCfmIkoLis/KSg/OvCfpKwoLis/KSk/JH0KICAgIHJlZ2V4cCAkZXhwciAkYXJncyAtPiBjb25kIHRoZW4gZWxzZQogICAgc2V0IGJvZHkgW2xpc3QgaWYgJGNvbmQgJHRoZW5dCiAgICB3aGlsZSB7JGVsc2UgbmUgIiJ9IHsKICAgICAgICBpZiB7W3JlZ2V4cCAkZXhwciAkZWxzZSAtPiBjb25kIHRoZW4gZWxzZV19IHsKICAgICAgICAgICAgbGFwcGVuZCBib2R5IGVsc2VpZiAkY29uZCAkdGhlbgogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGxhcHBlbmQgYm9keSBlbHNlICRlbHNlCiAgICAgICAgICAgIGJyZWFrCiAgICAgICAgfQogICAgfQogICAgdXBsZXZlbCAkYm9keQp9Cgpwcm9jIPCfjIAge2Zyb20gZGlyIHRvIC0+IHZhciBib2R5fSB7CiAgICB1cHZhciAkdmFyIGkKICAgIGxhc3NpZ24gW3N3aXRjaCAkZGlyIHsKICAgICAgICDihpcgeyBsaXN0IDwgIDEgfQogICAgICAgIOKGmCB7IGxpc3QgPiAtMSB9CiAgICB9XSBjbXAgc3RlcAogICAgZm9yIHtzZXQgaSAkZnJvbX0gIlwkaSAkY21wIFwkdG8iIHtpbmNyIGkgJHN0ZXB9IHsKICAgICAgICB1cGxldmVsICRib2R5CiAgICB9Cn0KCiMjIyMjIyMjIyMjIyMjCiMg8J+nitCT0LvRi9Cx0L7QutC+0LQgIyAKIyMjIyMjIyMjIyMjIyMKCvCfjIAgMSDihpcgMTAwIC0+IHggewogICAg8J+klCAkeCAlIDMgKyAkeCAlIDUgPT0gMCBcCiAgICAgICAg8J+YiSDwn5ejIGZpenpidXp6IFwKICAgIPCfpKwgJHggJSAzID09IDAg8J+YiSDwn5ejIGZpenogXAogICAg8J+krCAkeCAlIDUgPT0gMCDwn5iJIPCfl6MgYnV6eiBcCiAgICDwn6SsIPCfl6MgJHgKfQo=