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


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

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

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

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
ABRACADABRA!
« : 08 Июля 2011, 12:27:59 »
Если кто не в курсе, то из этого слова, вычитанием последней буквы, можно получить это же самое слово.
man

Суть темы в том, что бы найти самый короткий способ это сделать. Желательно на баше, но можно и на других языках.

Мой вариант:
$ for i in `seq 0 10`;do echo "ABRACADABRA"|sed "s/.\{$i\}$//";done
ABRACADABRA
ABRACADABR
ABRACADAB
ABRACADA
ABRACAD
ABRACA
ABRAC
ABRA
ABR
AB
A
echo -n 'for i in `seq 0 10`;do echo "ABRACADABRA"|sed "s/.\{$i\}$//";done' | wc -m
65


PS: Just for fun! Удачи!
« Последнее редактирование: 08 Июля 2011, 13:09:47 от RazrFalcon »
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: ABRACADABRA!
« Ответ #1 : 08 Июля 2011, 13:07:51 »
Код: (bash) [Выделить]
$ w=ABRACADABRA;for i in {11..1};do echo ${w::i};done
ABRACADABRA
ABRACADABR
ABRACADAB
ABRACADA
ABRACAD
ABRACA
ABRAC
ABRA
ABR
AB
A

$ echo -n 'w=ABRACADABRA;for i in {11..1};do echo ${w::i};done' | wc -m
51
« Последнее редактирование: 08 Июля 2011, 13:13:44 от arcfi »

Оффлайн RustemNur

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 2939
  • умрешь с вами
    • Просмотр профиля
Re: ABRACADABRA!
« Ответ #2 : 08 Июля 2011, 13:33:49 »
Суть темы в том, что бы найти самый короткий способ это сделать

Суть крайне сомнительная.
Обычно нужно либо макс. быстродействие, либо мин. используемой памяти.
А на диске что 65, что 51, что 651 байт - все один кластер.
 :(

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: ABRACADABRA!
« Ответ #3 : 08 Июля 2011, 13:58:17 »
Так я же говорю: Just for fun!
Это не проблема, просто мне интересно увидеть самый короткий вариант. Ну и программирование тут как ни к стати. Не в разговоры же такое.
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн Красноглазый

  • Активист
  • *
  • Сообщений: 702
    • Просмотр профиля
Re: ABRACADABRA!
« Ответ #4 : 08 Июля 2011, 14:06:37 »
Что-то я не совсем понял задачу. Каким образом вычитание последней буквы создает то же самое слово?
Если срезать по одной букве с конца и читать срезанные буквы в обратном порядке, то ЛЮБОЕ слово можно будет прочитать таким образом.
Задача какая-то дурацкая...

Оффлайн RustemNur

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 2939
  • умрешь с вами
    • Просмотр профиля
Re: ABRACADABRA!
« Ответ #5 : 08 Июля 2011, 14:13:26 »
Это не проблема, просто мне интересно увидеть самый короткий вариант

В каких-то языках, например, print, а в каких-то echo. Уже -1 символ.

Предлагаю наделать обнобуквенных алиасов на следующие команды:
echo ABRA
echo C
echo A
echo D
echo B
echo R
Получится всего 7 символов.
эээ.... сейчас посчитаю :)
« Последнее редактирование: 08 Июля 2011, 14:16:06 от RustemNur »

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: ABRACADABRA!
« Ответ #6 : 08 Июля 2011, 14:16:55 »
Неее, нужна именно "программа".

Красноглазый
Ладно, объясню снова:
ABRACADABRA
ABRACADABR
ABRACADAB
ABRACADA
ABRACAD
ABRACA
ABRAC
ABRA
ABR
AB
A
А теперь прочтите выделенное с конца.  ;)
По сути да, нужно отнимать последнюю букву, но может есть еще более странный вариант получения такого "вывода". По сути нужно получить текст как выше. Способ роли не играет.


Не принимайте все это всерьез. Я же написал, это просто в шутку, Развлекалочка-головоломка.
« Последнее редактирование: 08 Июля 2011, 14:18:32 от RazrFalcon »
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн Красноглазый

  • Активист
  • *
  • Сообщений: 702
    • Просмотр профиля
Re: ABRACADABRA!
« Ответ #7 : 08 Июля 2011, 14:53:39 »
Красноглазый
Ладно, объясню снова:
ABRACADABRA
ABRACADABR
ABRACADAB
ABRACADA
ABRACAD
ABRACA
ABRAC
ABRA
ABR
AB
A
А теперь прочтите выделенное с конца.  ;)
По сути да, нужно отнимать последнюю букву, но может есть еще более странный вариант получения такого "вывода". По сути нужно получить текст как выше. Способ роли не играет.

Не принимайте все это всерьез. Я же написал, это просто в шутку, Развлекалочка-головоломка.
КРАСНОГЛАЗЫЙ
КРАСНОГЛАЗЫ
КРАСНОГЛАЗ
КРАСНОГЛА
КРАСНОГЛ
КРАСНОГ
КРАСНО
КРАСН
КРАС
КРА
КР
К

Почему именно abracarabra?

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: ABRACADABRA!
« Ответ #8 : 08 Июля 2011, 15:05:49 »
Цитировать
Абракадабра (лат. abracadabra) — магическое слово, впервые упоминается в конце II века н. э. в медицинском трактате De Medicina Praecepta Самоника, врача императора Септимия Севера для лечения сенной лихорадки. Слово (заклинание против различных болезней) предписывалось использовать следующим образом. Оно выписывалось столбиком на дощечке 11 раз, при этом последняя буква каждый раз отсекалась. Получался треугольник. Такое постепенное укорачивание этого слова должно было уничтожать силу злого духа, и больной, надевая амулет, должен был постепенно выздоравливать.
;)

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

Оффлайн RustemNur

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 2939
  • умрешь с вами
    • Просмотр профиля
Re: ABRACADABRA!
« Ответ #9 : 08 Июля 2011, 15:08:27 »
Вы клинику при синагоге открываете, что ли?  :)
А Кроасноглазого бесплатно заюзать решили?

Оффлайн RazrFalcon

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

Оффлайн screen0920

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: ABRACADABRA!
« Ответ #11 : 08 Июля 2011, 15:37:58 »
(Нажмите, чтобы показать/скрыть)
Самое короткое, что я смог придумать. Сильно не пинать

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: ABRACADABRA!
« Ответ #12 : 08 Июля 2011, 16:26:06 »
Думаю такого хватит, заголовочники можно опустить:
string s;
s="ABRACADABRA";
for(int i=11;i>=0;i--)
  for(int j=0;j<=i;j++)
  {
    cout<<s[j-1];
    if (j==i)
      cout<<"\n";
  }
103 символа

Пользователь решил продолжить мысль [time]Fri Jul  8 16:43:55 2011[/time]:
Вариант на Qt:
for(int i=10,n=1;i>0;--i,++n)qDebug()<<QString("ABRACADABRA").remove(i,n);$ echo -n 'for(int i=10,n=1;i>0;--i,++n)qDebug()<<QString("ABRACADABRA").remove(i,n);' | wc -m
74
« Последнее редактирование: 08 Июля 2011, 16:45:33 от RazrFalcon »
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн spectator

  • Участник
  • *
  • Сообщений: 120
    • Просмотр профиля
Re: ABRACADABRA!
« Ответ #13 : 09 Июля 2011, 10:00:56 »
-upd-
c99
main(){for(int i=11;i>0;i--){write(1,"ABRACADABRA",i);write(1,"\n",1);}}
72 символа

fasm бинарник 182 байта
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 09 Июля 2011, 13:04:32 от spectator »

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

  • Активист
  • *
  • Сообщений: 286
    • Просмотр профиля
    • Искусственная жизнь по-русски
Re: ABRACADABRA!
« Ответ #14 : 09 Июля 2011, 11:12:52 »
74 байта, говорите? Заголовки можно не считать, говорите? Вот вам:

: f 0; 2dup type cr 1- f ;
" ABRACADABRA" f

44 байта, заголовки вовсе не нужны, все использованные функции искаропки. Угадайте, что за язык.
Боится смерти тот, кто мало сделал за свою жизнь. /Фидель Кастро/

 

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