|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Modus ponens
|
А вот собственно, решение на божественном языке
#!/usr/bin/sbcl --script (defun fizz-buzz (i threes fives) (let (result) (when (< i 100) (setq result "") (when (= i threes) (setq result "Fizz") (setq threes (+ threes 3)) ) (when (= i fives) (setq result (concatenate 'string result "Buzz")) (setq fives (+ fives 5)) ) (when (equal result "") (setq result i) ) (print result) (fizz-buzz (1+ i) threes fives) ) ) ) (fizz-buzz 1 3 5)
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 30.06.2010 в 07:27. |
|
|||||
Регистрация: Sep 2006
Сообщений: 256
|
val s = (1 to 100).foldLeft(""){(xs, x) => xs + (x match{ case a if x % 5 == 0 && x % 3 == 0 => "FizzBuzz" case b if x % 5 == 0 => "Buzz" case c if x % 3 == 0 => "Fizz" case _ => x.toString }) } это ничего не выводит. хм. тогда так
__________________
:emocry: Последний раз редактировалось lowka; 29.06.2010 в 01:21. |
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Раз уж пошли "божественные" языки..))
-module(test). -export([fizzBuzz/0]). fizzBuzz() -> fizzBuzz(1). fizzBuzz(101)->ok. fizzBuzz(A)-> if A rem 3 == 0 && A rem 5 == 0 -> io:format("FizzBuzz~n", []); A rem 3 == 0 -> io:format("Fizz~n", []); A rem 5 == 0 -> io:format("Buzz~n", []); true -> io:format("~w~n", [A]) end, fizzBuzz(A+1). >test:fizzBuzz().
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 30.06.2010 в 13:27. |
|
|||||
4AM Games
|
Prolog
shout( fizz, 3 ). shout( buzz, 5 ). fizz_buzz( Total, Total ) :- true. fizz_buzz( Current, Total ) :- shout( X, Current ), shout( Y, Current ), Current is Current + 1, fizz_buzz( Current, Total), X, Y. Добавлено через 23 минуты Кстати, старый добрый ActionScript, тоже может тянутся на Олимп: var fizzBuzz:Function = function( count:int = 0 ):void { var result:String = ''; if( !( count % 3 ) ) result += "Fizz"; if( !( count % 5 ) ) result += "Buzz"; trace( count, result ); tail( count ); } var tail:Function = function( count:int ):void { if( ++count <= 100 ) fizzBuzz( count ); } fizzBuzz();
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ Последний раз редактировалось Nirth; 30.06.2010 в 02:43. |
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
практически аналог эрланговского кода на AS3 :
function fizzBuzz(a:int=1,b:int=100):void { if (a > b) return; if (a % 3 == 0 && a % 5 == 0) trace ("FizzBuzz"); else if (a % 3 == 0) trace ("Fizz"); else if (a % 5 == 0) trace ("Buzz"); else trace(a); fizzBuzz(a + 1,b); } fizzBuzz(); fizzBuzz(1,256); UPD: странно..никакого переполнения не наблюдаю))))) UPD2: таки наблюдаю на fizzBuzz(1,5552); Цитата:
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 30.06.2010 в 13:49. |
|
|||||
4AM Games
|
Ну кстати, tail рекурсией, можно сделать вызов setTimeout ^_^ и обойти переполнение стэка
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
Часовой пояс GMT +4, время: 03:38. |
|
« Предыдущая тема | Следующая тема » |
|
|