Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: ABRACADABRA!  (Прочитано 3948 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Обедающий философ

  • Активист
  • *
  • Сообщений: 286
    • Просмотр профиля
    • Искусственная жизнь по-русски
Re: ABRACADABRA!
« Ответ #30 : 09 Июля 2011, 20:28:10 »
ну лично мне пример на форте мозг сломал.

Так там всё просто.

: - объявление функции
f - имя функции
0; - выход, ежели 0 на стеке
2dup - скопировать два числа на стеке
type - вывести строку на экран
cr - перевод строки
1- - отнять единицу
f - вызвать функцию
; - завершение определения функции
" ABRACADABRA" - создать строку, на стек кладётся её адрес и длина
f - вызвать функцию

А вот на руби ничего не понятно. :D
Боится смерти тот, кто мало сделал за свою жизнь. /Фидель Кастро/

Оффлайн spectator

  • Участник
  • *
  • Сообщений: 120
    • Просмотр профиля
Re: ABRACADABRA!
« Ответ #31 : 09 Июля 2011, 21:25:24 »
А вот на руби ничего не понятно. :D
Суровая штука этот ваш форт.

с руби просто, если помнить что там всё - объекты.

Код: (ruby) [Выделить]
11.times{|i|p"ABRACADABRA"[0..10-i]}аналогично

Код: (ruby) [Выделить]
a = "ABRACADABRA"
a.length.times{                       #длина_строки_а раз выполняем
     |i|                                                #счётчик итераций
     puts a[0..a.length-1-i]          #выводим символы строки a с нулевого по (длина_строки_а-1-i)
}
я просто заменил a.length на 11, "puts" на "p", убрал лишние пробелы и записал в одну строку

ещё способы
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 09 Июля 2011, 21:42:12 от spectator »

andrey_p

  • Гость
Re: ABRACADABRA!
« Ответ #32 : 11 Июля 2011, 10:20:08 »
$ perl -E '$_=ABRACADABRA;say while chop'

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: ABRACADABRA!
« Ответ #33 : 11 Июля 2011, 13:09:30 »
И сколь же тут символов?
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

andrey_p

  • Гость
Re: ABRACADABRA!
« Ответ #34 : 11 Июля 2011, 14:46:08 »
30/40 Вы там определитесь как считать. Наверное можно 39, не знаю у меня еще 10 дней под рукой только андроид. В любом случае победитель. Так что рулит Перл :)

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: ABRACADABRA!
« Ответ #35 : 11 Июля 2011, 14:52:51 »
>>Вы там определитесь как считать
А что там считать, укорачивайте как хотите, и считайте КАЖДЫЙ символ.

40
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: ABRACADABRA!
« Ответ #36 : 11 Июля 2011, 14:53:13 »
Хотелось бы увидеть реализацию на brainfuck. У меня только ввод слова занял 60-70 символов.
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: ABRACADABRA!
« Ответ #37 : 11 Июля 2011, 14:53:40 »
Хотелось бы увидеть реализацию на brainfuck. У меня только ввод слова занял 60-70 символов.
:2funny:

PS: для этого тема и предназначена, собрать кучу решений тривиальной задачи.
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн Sova777

  • Участник
  • *
  • Сообщений: 208
    • Просмотр профиля
    • Несколько слов о NetBeans C/C++ Pack'е
Re: ABRACADABRA!
« Ответ #38 : 11 Июля 2011, 15:12:46 »
30/40 Вы там определитесь как считать. Наверное можно 39, не знаю у меня еще 10 дней под рукой только андроид. В любом случае победитель. Так что рулит Перл :)
Единственный недостаток - строка или не работает или работает неправильно
Пользователь OpenSolaris 2008.11, Ubuntu 8.10, Windows XP. Mac OS X не нравится, стараюсь не использовать.

Оффлайн spectator

  • Участник
  • *
  • Сообщений: 120
    • Просмотр профиля
Re: ABRACADABRA!
« Ответ #39 : 11 Июля 2011, 15:37:21 »
$ perl -E '$_=ABRACADABRA;say while chop'
Выводить начинает с "ABRACADABR".
если так, то работает
perl -E '$_=ABRACADABRAz;say while chop'40 символов.

аналогичный код на руби и те же 40 символов.
a="ABRACADABRA ";a.each_char{p a=a.chop}

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: ABRACADABRA!
« Ответ #40 : 11 Июля 2011, 16:34:02 »
забавная тeма.
На питонe так напримeр#!/usr/bin/python
a = "ABRACADABRA"
while a:
print a
a = a[:-1]
-бeз шабанга 49
И в отличии от это будет работать с любой длиной слова.

#!/usr/bin/python
a="ABRACADABRA"
while a:print a;a=a[:-1]
-бeз шабанга 41 или 40.
Тот же питон, но менее красивый.
По любому самый лаконичным будет стековый язык - форт. 
Из приличных - питон.
Из заморочных - перл.
« Последнее редактирование: 12 Июля 2011, 08:09:14 от alexander.pronin »

Оффлайн spectator

  • Участник
  • *
  • Сообщений: 120
    • Просмотр профиля
Re: ABRACADABRA!
« Ответ #41 : 11 Июля 2011, 18:56:50 »
Хотелось бы увидеть реализацию на brainfuck. У меня только ввод слова занял 60-70 символов.
-upd-
Сделал. грязно конечно, но работает.
(Нажмите, чтобы показать/скрыть)
PS. Кажется ещё чуть чуть и у форумчан сложится какое-то неправильное впечатление. сначала си и асм, теперь брейнфак.
« Последнее редактирование: 11 Июля 2011, 20:53:38 от spectator »

Оффлайн FluffyMan

  • Активист
  • *
  • Сообщений: 276
  • Debian 6
    • Просмотр профиля
Re: ABRACADABRA!
« Ответ #42 : 11 Июля 2011, 20:02:20 »
Цитировать
271 символ. Переводы строк добавил, ибо форум сам не разбивает

Цитировать
А вот  это уже смешно. версия, которая не заморачивается, а просто выводит все символы ничего не считая.
249 символов.

 :D

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: ABRACADABRA!
« Ответ #43 : 11 Июля 2011, 20:14:07 »
spectator, главное что бы работало. Второй вариант я почти реализовал, используя всего три ячейки: буквы, пробел и буква R, а вот ваш первый вариант даже разбирать боюсь.
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн spectator

  • Участник
  • *
  • Сообщений: 120
    • Просмотр профиля
Re: ABRACADABRA!
« Ответ #44 : 11 Июля 2011, 20:36:29 »
spectator, главное что бы работало. Второй вариант я почти реализовал, используя всего три ячейки: буквы, пробел и буква R, а вот ваш первый вариант даже разбирать боюсь.
Ну во втором символы у меня тоже по трём ячейкам. нулевая, чтоб быстрее сгенерировать.
с первым примером всё очень печально))
пока писал объяснялку сократил ещё чуть чуть. надо чаще так делать)
(Нажмите, чтобы показать/скрыть)

Код можно ещё сократить, если сделать перевод строки 6 символом, а остальные соответсвенно сдвинуть. ну т.е. тут у меня 'a' во второй ячейке, а сделать в первой и.т.д. теперь он "всего лишь" 231 символ

Если в третью ячейку записать 'R', а 'c' и 'd' сдвинуть на одну позицию вправо можно выиграть ещё один символ. и вроде я ещё что-то там сделал, теперь код в 228 символов

(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 11 Июля 2011, 21:57:32 от spectator »

 

Страница сгенерирована за 0.035 секунд. Запросов: 25.