An AJAX service which runs a given script. The result is returned as JSONP.
http://api.dan.co.jp/lleval.cgi?c=callback&s=source
When l=language is ommited, #!
is used.
With jQuery the
code would be as follows. LLEval(srcNode, dstNode, lang) where srcNode is the node in which the source code resides, dstNode where you want to put the result, and lang (optional) in which language the code gets executed.
(function($){
var keysOf = function(o){
var keys = [];
for (var k in o) keys[keys.length] = k;
return keys;
};
json2dl = function(json){
var dl = $('<dl/>');
$.each(keysOf(json).sort(), function(i, k){
$('<dt/>').text(k).appendTo(dl);
var dd = $('<dd/>').text(json[k])
if (k.match(/^std/)) dd.css({fontFamily:'monospace',whiteSpace:'pre'});
dd.appendTo(dl);
});
return dl;
};
LLEval = function(srcNode, dstNode, lang){
var query = {s:(srcNode.value || $(srcNode).text())};
if (lang) query['l'] = lang;
var url = 'http://api.dan.co.jp/lleval.cgi';
var proto = 'json';
if ($.browser.msie || $.browser.opera){
url += '?c=?';
proto += 'p';
} /* falls back to JSONP */
$.get(url, query, function(json){
$(dstNode).html(json2dl(json));
}, proto);
};
})(jQuery);
Without jQuery it would be like:
(function(d){
LLEval = function(src, dst, ll){
runJSON(ll || 'll', function(json){
dst.innerHTML = '';
dst.appendChild(json2dl(json));
}, src.value, ll);
};
runJSON = function(name, func, src, ll){
if (! this['JSONP']) JSONP = {};
JSONP[name] = func;
(function(uri){
var s = d.createElement('script');
s.charset = 'UTF-8';
s.src = uri + '&s=' + encodeURIComponent(src);
if (ll) s.src += '&l=' + encodeURIComponent(ll)
s.id = s.src;
d.body.appendChild(s);
})('http://api.dan.co.jp/lleval.cgi?c=JSONP.' + name, src, ll);
};
var appendText = function(e, t){
e.appendChild(d.createTextNode(t));
};
json2dl = function(json){
var keys = [];
for (var k in json) keys[keys.length] = k;
keys.sort();
var dl = d.createElement('dl');
dl.style.width = '100%';
for (var i = 0, l = keys.length; i < l; i++){
var k = keys[i]; var v = json[k];
var dt = d.createElement('dt');
appendText(dt, k);
dl.appendChild(dt);
var dd = d.createElement('dd');
appendText(dd, v);
if (keys[i].match(/^std/)){
dd.style.fontFamily = 'monospace';
dd.style.whiteSpace = 'pre';
}
dl.appendChild(dd);
}
return dl;
};
})(document);
To get a list of languages suppoted, access
http://api.dan.co.jp/lleval.cgi?q=1
(function($){
askLanguages = function(dstNode){
var query = {q:1};
var url = 'http://api.dan.co.jp/lleval.cgi';
var proto = 'json';
if ($.browser.msie || $.browser.opera){
url += '?c=?';
proto += 'p';
}
$.get(url, query, function(json){
delete json['error'];
$(dstNode).html(json2dl(json));
}, proto);
}
})(jQuery);
#!/usr/bin/perl
use LWP::Simple; print get("http://www.google.com/");
Whatsoever.
Enjoy!
Dan the LL Monger
Best Supported. As a matter of fact this service is written in perl. Not only core modules but also popular modules like LWP are available
print $_ % 15
? $_ % 5
? $_ % 3
? $_
: 'Fizz'
: "Buzz"
: q{FizzBuzz}, "\n"
for ( 1 .. 30 );
Very slow. So slow I gave twofour seconds.
[1..30].map({
{ $^n % 3 ?? '' !! 'Fizz' }($_)
~
{ $^n % 5 ?? '' !! 'Buzz' }($_)
|| $_
}).join("\n").say;
-f is needed to run as a script
BEGIN {
for (NUM = 1; NUM <= 30; NUM++)
if (NUM % 15 == 0) { print "FizzBuzz" }
else if (NUM % 3 == 0) { print "Fizz" }
else if (NUM % 5 == 0) { print "Buzz"}
else { print NUM }
}
bwbasic does not support shebang but this service does (kinda).
10 FOR N=1 TO 30 20 LET F$ = "" 30 IF N MOD 3 = 0 THEN LET F$ = "Fizz" 40 IF N MOD 5 = 0 THEN LET F$ = F$ + "Buzz" 50 IF F$ = "" THEN LET F$ = N 60 PRINT F$ 70 NEXT N 80 QUIT
! notation supported. Use it for stdin replacement.
++++++[->++++> >+>+>-<<<<<]>[<++++> >+++>++++> >+++>+++++>++ +++> > > > > >++> >++<<<<<<<<<<<<<<-]<++++>+++>-->+++>-> >-- ->++> > >+++++[->++>++<<]<<<<<<<<<<[->-[> > > > > > >]>[<+++ >.>.> > > >..> > >+<]<<<<<-[> > > >]>[<+++++>.>.>..> > >+<]> > > >+<-[<<<]<[[-<<+> >]> > >+>+<<<<<<[-> >+>+>-<<<<]<]>>[[ -]<]>[> > >[>.<<.<<<]<[.<<<<]>]>.<<<<<<<<<<<]
You need to specify #!/usr/bin/tcc -run if
you want to use shebang.
#include <string.h>
char *fizz(int n){ return n % 3 ? "" : "Fizz"; }
char *buzz(int n){ return n % 5 ? "" : "Buzz"; }
char *fizzbuzz(char *buf, int n){
strcpy(buf, fizz(n));
strcat(buf, buzz(n));
if (!strlen(buf)) sprintf(buf, "%d", n);
return buf;
}
#include <stdio.h>
void main(){
int i;
char buf[12];
for (i = 1; i <= 30; i++){
printf("%s\n", fizzbuzz(buf, i));
}
}
You need to specify #!/usr/bin/emacs --script if
you want to use shebang.
(print (mapcar (lambda (num)
(cond
((= (% num 15) 0) "FizzBuzz")
((= (% num 3) 0) "Fizz")
((= (% num 5) 0) "Buzz")
(t num)))
'( 1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30)))
You need to specify #!/usr/bin/ecl -shell if you
want to use shebang.
(print (loop for i from 1 to 30 collect (cond ((= 0 (mod i 15)) "FizzBuzz") ((= 0 (mod i 3)) "Fizz") ((= 0 (mod i 5)) "Buzz") (t i))))
(use srfi-1)
(for-each
print
(map
(lambda (x)
(cond
((= (modulo x 15) 0) "FizzBuzz")
((= (modulo x 5) 0) "Buzz")
((= (modulo x 3) 0) "Fizz")
(else x)))
(iota 30 1)))
wvwwWWwWWWwvWwwwwWWwWWWwWWWWwWWWWWwWWWWWWwWWWWWWWwWwwwwwwwwwwwwW WWWwWWWWWWWwWWWWWWWWWWWWWWwWWWWWWWWWWWwwWWWWWWWWWWwwWWWWWWWWWWWW wWWWWWWWWWWwwWWWWWWWWWWwwwwwwWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWW WWwWWWWWWWWWWWWWWWWWWwwWWWWWWWWWWWWWWWWWwwWWWWWWWWWWWWWWWWWwwwww WWWWWWWWWWWWWWWWWWWWwwWWWWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWW WWWWWWwwwwwwwwwwwwwwwwwwwwwwwwwwWwwwwwwwwwwWWwwwwwwwWWWwwwwwwwWW WWwWWWWWwwwwwwwwWWWWWWwwwwwwwwwwwwwwwwWWWWWWWwwwwwwwwwwwwwwwwwww wWWWWWWWWwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwWWWWWWWWWwwwwWWWWWW WWWWwwwwwwwwwwwWWWWWWWWWWWwwwwwwwWWWWWWWWWWWWwwwwwwwwwwwwwwwwwwW WWWWWWWWWWWWwwwwwwwwwwwwwwwwwwwwwwwww
main = mapM_ (putStrLn . fizzbuzz) [1..30]
fizzbuzz n
= if or $ map (\s->length s /= 0) [fizz, buzz]
then fizz ++ buzz
else show n
where fizz = if mod n 3 == 0 then "Fizz" else ""
buzz = if mod n 5 == 0 then "Buzz" else ""
for (n, 1, 30,
fb := list (
if (n % 3 == 0, "Fizz"),
if (n % 5 == 0, "Buzz")) select (isTrue)
if (fb isEmpty, n, fb join) println
)
SpiderMonkey 1.8.5.
Ports collection only has 1.7.0 so this one is hand-built accordingly to the link above.
for (var i = 0; i <= 30; i++){
print (
i % 15
? i % 5
? i % 3
? i : 'Fizz'
: 'Buzz'
: 'FizzBuzz'
);
}
Unlambda, iota, and jot notations are all supported.
Due to the space constraints, the following example in iota just prints "Hi" instead of FizzBuzz in other example.
**i*i*ii***i*i*i*ii***i*i*i*ii*ii**i*i*ii***i*i*i*ii**i*i*ii**** i*i*i*ii*ii*ii***i*i*i*ii***i*i*i*ii**i*i*ii*i*i*i*ii*i*i*ii*ii* **i*i*i*ii***i*i*i*ii**i*i*ii*i*i*i*ii*i*i*ii***i*i*i*ii***i*i*i *ii**i*i*ii*i*i*i*ii*i*i*ii****i*i*i*ii***i*i*i*ii*ii*ii*ii***i* i*i*ii***i*i*i*ii**i*i*ii*i*i*i*ii*i*i*ii*ii**i*i*ii***i*i*i*ii* **i*i*i*ii*ii**i*i*ii***i*i*i*ii***i*i*i*ii**i*i*ii*i*i*i*ii*i*i *ii***i*i*i*ii**i*i*ii****i*i*i*ii*ii*ii***i*i*i*ii***i*i*i*ii** i*i*ii*i*i*i*ii*i*i*ii*ii***i*i*i*ii***i*i*i*ii**i*i*ii*i*i*i*ii *i*i*ii****i*i*i*ii***i*i*i*ii**i*i*ii*i*i*i*ii*i*i*ii*ii***i*i* i*ii***i*i*i*ii**i*i*ii*i*i*i*ii*i*i*ii****i*i*i*ii*ii*ii***i*i* i*ii***i*i*i*ii**i*i*ii*i*i*i*ii*i*i*ii*ii**i*i*ii***i*i*i*ii*** i*i*i*ii*ii**i*i*ii***i*i*i*ii**i*i*ii***i*i*i*ii***i*i*i*ii**i* i*ii*i*i*i*ii*i*i*ii*ii***i*i*i*ii***i*i*i*ii**i*i*ii*i*i*i*ii*i *i*ii****i*i*i*ii*ii*ii***i*i*i*ii***i*i*i*ii**i*i*ii*i*i*i*ii*i *i*ii*ii**i*i*ii**i*i*ii****i*i*i*ii*ii*ii****i*i*i*ii*ii*ii***i *i*i*ii***i*i*i*ii**i*i*ii*i*i*i*ii*i*i*ii*ii
function fizzbuzz(n)
if n % 15 == 0 then
return "FizzBuzz"
elseif n % 3 == 0 then
return "Fizz"
elseif n % 5 == 0 then
return "Buzz"
else
return n
end
end
for i=1,30 do
print(fizzbuzz(i))
end
define(`for', `ifelse($#,0,``$0'', `ifelse(eval($2<=$3),1, `pushdef(`$1',$2)$5`'popdef(`$1')$0(`$1',eval($2+$4),$3,$4,`$5')')')') for(`x',1,30,1, `ifelse(eval(x%15==0),1,FizzBuzz, `ifelse(eval(x%3==0),1,Fizz, `ifelse(eval(x%5==0),1,Buzz,x)')') ')
/usr/bin/ocaml is built as:
ocamlmktop -custom unix.cma -o ocaml
let fizzbuzz n =
let fizz = if n mod 3 == 0 then "Fizz" else "" in
let buzz = if n mod 5 == 0 then "Buzz" else "" in
if [] != List.filter (fun s -> String.length s != 0) [fizz;buzz]
then fizz ^ buzz
else string_of_int n
let puts s = print_string( s ^ "\n");;
for i = 1 to 30 do
puts (fizzbuzz i)
done;;
<?php
for ($i=1; $i <= 30; $i++){
echo $i % 15 ?
( $i % 5 ?
( $i % 3 ? $i : "Fizz" )
: "Buzz")
: "FizzBuzz";
echo "\n";
}
?>
def fizzbuzz(n):
for i in range(1, n+1):
if i % 15 == 0: yield 'FizzBuzz'
elif i % 5 == 0: yield 'Buzz'
elif i % 3 == 0: yield 'Fizz'
else: yield i
for x in fizzbuzz(30): print x
def fizzbuzz(n):
for i in range(1, n+1):
if i % 15 == 0: yield 'FizzBuzz'
elif i % 5 == 0: yield 'Buzz'
elif i % 3 == 0: yield 'Fizz'
else: yield i
for x in fizzbuzz(30): print(x) # print() is now a function
1.upto(30) do |i| s = [ [:Fizz][ i % 3 ], [:Buzz][ i % 5 ] ] * ''; puts s[1] ? s : i end
# http://d.hatena.ne.jp/takatoh/20090207/fizzbuzz
fizzbuzz = Fiber.new do
fizz = ["", "", "Fizz"].cycle
buzz = ["", "", "", "", "Buzz"].cycle
n = 1
while
s = fizz.next + buzz.next
Fiber.yield(s == "" ? n.to_s : s)
n += 1
end
end
30.times{ puts fizzbuzz.resume }
gs does not support shebang but this service does (kinda).
1 1 30
{ dup 15 mod 0 eq {(FizzBuzz)}
{ dup 3 mod 0 eq {(Fizz)}
{ dup 5 mod 0 eq {(Buzz)}
if} ifelse } ifelse = clear }
for
for {set i 1} {$i <= 30} {incr i} {
if {![expr $i % 3] && ![expr $i % 5]} {
puts "FizzBuzz"
} elseif {![expr $i % 3]} {
puts "Fizz"
} elseif {![expr $i % 5]} {
puts "Buzz"
} else {
puts $i
}
}