moon_aka_sun: (Default)
[personal profile] moon_aka_sun

По мотивам "99 бутылок" на Scheme. Без определений и присваиваний. Собственно, примерно как букмарклеты на javascript делаются. Просто не встечал пока никогда первой в строке лямбду вместо имени функции. Ну и print теперь функция.

(lambda f,c:f(f,c))(lambda f,c:print('no more')if c==0 else print('%d bottles'%c)or f(f,c-1),99)

Date: 2011-03-12 03:21 am (UTC)
From: [identity profile] kmmbvnr.livejournal.com
Хе-хе, вспомнил свое решение на Java/Drools

http://99-bottles-of-beer.net/language-drools-1076.html

Date: 2011-03-12 10:23 am (UTC)
From: [identity profile] moon-aka-sun.livejournal.com
Ужыс. Джава в полный рост со страшной силой. С непременным xml впридачу :D

Date: 2011-03-14 06:16 pm (UTC)
From: [identity profile] fiodar.livejournal.com
Трепещите, питоноводы.
5.downto(0) { |n| puts( (0==n ? "no more":n.to_s)); }
:)

Date: 2011-03-14 06:42 pm (UTC)
From: [identity profile] moon-aka-sun.livejournal.com
Не, это не то. Всё красота -- в том, что начинается с функции и передаёт функцию. Что-то вроде

{|f,c|f(f,c)}({f,c:c>0?puts("no more"):puts(n.to_s)||f(f,c-1)},99}

Только придётся тоже или lambda, или proc надо будет вставлять. В k не надо :)

{x[x;y]}[{:[y>0;`0:"no more";`0:y...x[x;y]};99] примерно...

Date: 2011-03-14 08:33 pm (UTC)
From: [identity profile] fiodar.livejournal.com
Красота - в краткости выражения!
Лямбдами и передачей функции нас, в молодости прикоснувшихся к Лиспу, не удивишь :)

Date: 2011-03-15 01:25 am (UTC)
From: [identity profile] moon-aka-sun.livejournal.com
угу. 5.downto(0){|n|puts n||'no more'}

Date: 2011-03-15 01:22 pm (UTC)
From: [identity profile] fiodar.livejournal.com
Ноль - обычный объект, не сработает как false, это тебе не С. Только false да nil срабатывают как false. Скобок я таки перебрал в первом варианте.

Date: 2011-03-15 03:20 pm (UTC)
From: [identity profile] moon-aka-sun.livejournal.com
Разве бы я смог запостить, не проверив??
$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin]
$ ruby -e "5.downto(0){|n|puts n||'no more'}"
5
4
3
2
1
0
$

Date: 2011-03-15 03:21 pm (UTC)
From: [identity profile] moon-aka-sun.livejournal.com
а, ну да. забыл, что нам надо 'no more', a не ноль. прошу прощения.

Date: 2011-03-15 03:23 pm (UTC)
From: [identity profile] moon-aka-sun.livejournal.com
а что это ты ruby занялся? новый тренд в большом голубом брате?

Date: 2011-03-15 05:10 pm (UTC)
From: [identity profile] fiodar.livejournal.com
Некоторое время назад когда трендом были разные mash-ups, RoR выглядел как альтернатива, поскольку "приложение можно сляпать быстро" и на том и на другом, хоть на этом их пересечение и заканчивается.
Но я тогда как почитал про сам язык, зело он мне понравился, и теперь если мне надо написать скриптик, где в bash тесно, то я пишу не на питоне и не на перле, которых не знаю, а на руби (который знаю слегка).
Rails все не было времени освоить, начинал читать пару раз, но если читать не каждый день-два, а раз в 4 месяца, почему-то ничего в голове не оседает. Тут есть мысль для дома для семьи парочку вещей сделать, с HTML5, что бы под смартфоны и все такое, вот вернулся опять к RoR.

Date: 2011-03-15 07:01 pm (UTC)
From: [identity profile] moon-aka-sun.livejournal.com
Ух ты.
С каких-то сторон мне Руби тоже нравится, но с каких-то других - нет. Вот нельзя так, чтоб всё было хорошо :( В питоне тоже куча извратов, увы.
Будешь теперь японский учить? :))))

Date: 2011-03-15 08:53 pm (UTC)
From: [identity profile] fiodar.livejournal.com
очень давно очень хочу!
"Аригато, чебурашка".
http://www.youtube.com/watch?v=dZBU6WzBrX8

Date: 2011-03-15 01:38 am (UTC)
From: [identity profile] moon-aka-sun.livejournal.com
На K 2.9t
{x[x;y]}[{:[y=0;`0:"no more";x[x;y-#(`0:(5:y),"\n")]]};99]

December 2016

S M T W T F S
    123
4 5678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 25th, 2025 07:37 pm
Powered by Dreamwidth Studios