Здесь больше нет рекламы. Но могла бы быть, могла.

Автор Тема: Программерские приколы.  (Прочитано 4587 раз)

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

Maeglor

  • Гость
Что-то я тут не вижу програмистских задач.
Пусть будут!
Тоже задачи!

1. Что означает в одном недоязыке(по моему Паскале) такое выражение:
type x=array[boolean,boolean,boolean] of boolean;

2. А вот есть у меня алкоритм архиватора сжимающего любой файл до 1 байта (ну и естественно разжимающий его обратно). И применение у него есть четкое. Не скажете ли мне что это за алгоритм. Только если догадаетесь ногами не бейте ладно?

3. И еще один алгоритм архиватора не столь впечатляющий но зато действующий. Есть некий спрособ сжатия игровых ландшафтов (скажем для RPG или  стратегий) таой что вполне осмысленный ландшафт будет занимать очень небольшое место (порядка 500 байт). Алгоритм вполне дееспособный и даже реализованный мною в одном из проэктов. Бесплатно делюсь!

               

               

Ayar

  • Гость
Re:Программерские приколы.
« Ответ #1 : 04/03/2004, 17:04:13 »
1) А не не определение ли это типа переменной- массива логических переменных размерностью 2х2х2?

2) Ничего путного в голову не приходит :(. Может это создание симлинка (или как оно там в виндовс называется) на файл?

3) Можно наводящий вопрос? Этот алгоритм сначала сжимает а потом восстанавливает ландшафт любой сложности без потери качества?

               

               

Maeglor

  • Гость
Re:Программерские приколы.
« Ответ #2 : 04/03/2004, 19:52:47 »
1. Естественно да.
2. Нет. Этот алгоритм сжимает и расжимает файл а не делает на него ссылку.
3. Нет сжатие производится непосредственно при создании, хотя если его немного перелелать... Короче думайте а я еще задачек поищу. Кстати я отнють не обижусь если у кого-то найдутся задачки во теме и он выкинет их сюда вне очереди. Я тоже порешать хочу.

               

               

Erlom-Tiu

  • Гость
Re:Программерские приколы.
« Ответ #3 : 04/03/2004, 20:27:21 »
Есть такая фича: попробовать написать самую короткую программу, воспроизводящую свой текст, на определённом языке.

Если интересно, дальше идёт ссылка:

http://pic200x.chat.ru/new_year.htm
.

<2: интересный архиватор, где-то я такое уже видел, только без разжимания...
М.б. надо запомнить содержимое файла в голове, а потом воспроизвести в Notepade :-)

P.S.: к Арвинду пора обращаться ...

               

               

Maeglor

  • Гость
Re:Программерские приколы.
« Ответ #4 : 04/03/2004, 20:34:01 »
main(){cout>>"text";}

Можно проще?

               

               

Erlom-Tiu

  • Гость
Re:Программерские приколы.
« Ответ #5 : 05/03/2004, 21:42:22 »
в смысле <<"text" ?
так она и выведет

Код:
text

а не

Код:
main(){cout>>"text";}

Кроме того, по указанной ссылке, есть описание языка программирования. (PiBAS)


               

               

Maeglor

  • Гость
Re:Программерские приколы.
« Ответ #6 : 05/03/2004, 23:29:11 »
Извени. Я кажется разучился читать. Про то что текст самой себя я не увидел.

               

               

Maeglor

  • Гость
Re:Программерские приколы.
« Ответ #7 : 06/03/2004, 00:29:28 »
Вот что у меня получилось:
Хотите верьте, хотите нет но оно самое себя выводит.
 
a="a='?&(a,1,2)+b+&(a,1,2)+b+&(a,4,97)+b+&(a,107,1)+&(a,14,14)+&(a,2,3)+b+&(a,3,3)+&(a,107,1)+&(a,4,97);";b='"';?&(a,1,2)+b+&(a,1,2)+b+&(a,4,97)+b+&(a,90,1)+&(a,14,14)+&(a,2,3)+b+&(a,3,3)+&(a,97,1)+&(a,4,97);

Хотя, конечно, тут огромное поле для оптимицации.


               

               

Erlom-Tiu

  • Гость
Re:Программерские приколы.
« Ответ #8 : 06/03/2004, 15:33:11 »
Уменьшить можно :-)

Дополнение: оператор
$ (знак доллара, на форуме выглядит почему-то амперсандом) в качестве первого параметра может принимать строковое выражение, напр.
Код:
$(A+B,3,12)


               

               

Maeglor

  • Гость
Re:Программерские приколы.
« Ответ #9 : 06/03/2004, 22:26:06 »
Этого и не надо. Программу можно сделать всего с одной константой.

Писать оптимизированное решение мне лень. Свою часть я уже сделал. Дальше пусть другие мучаются.

               

               

Ayar

  • Гость
Re:Программерские приколы.
« Ответ #10 : 11/03/2004, 17:03:34 »

Цитата:
2. А вот есть у меня алкоритм архиватора сжимающего любой файл до 1 байта (ну и естественно разжимающий его обратно). И применение у него есть четкое. Не скажете ли мне что это за алгоритм. Только если догадаетесь ногами не бейте ладно?



М.б. это удаление файла на fat'e, при этом теряется первый символ имени, на его запоминание нужен как раз 1 байт. И соответственно восстановление удаленного файла?

               

               

Maeglor

  • Гость
Re:Программерские приколы.
« Ответ #11 : 11/03/2004, 19:43:15 »
Да это один из вариантов. Но есть еще и второй.


               

               

Dalen

  • Гость
Re: Программерские приколы.
« Ответ #12 : 21/07/2004, 06:41:52 »

Цитата:
Есть такая фича: попробовать написать самую короткую программу, воспроизводящую свой текст, на определённом языке.


.bat:

echo

:)

               

               

Арвинд

  • Гость
Re: Программерские приколы.
« Ответ #13 : 24/07/2004, 14:55:01 »

Цитата из: Dalen on 21-07-2004, 06:41:52

Цитата:
Есть такая фича: попробовать написать самую короткую программу, воспроизводящую свой текст, на определённом языке.


.bat:

echo


Не помню, как оно было в ДОСе. Сейчас под 2000 у меня это не работает (команда echo без параметров пишет, включен ли режим вывода).

               

               

Dalen

  • Гость
Re: Программерские приколы.
« Ответ #14 : 25/07/2004, 23:15:45 »
Ну значит echo something

               

               

Dalen

  • Гость
Re: Программерские приколы.
« Ответ #15 : 11/08/2004, 08:23:17 »
Ode to C:

May your signals all trap
May your references be bounded
All memory aligned
Floats to ints rounded

Remember ...

Non-zero is true
++ adds one
Arrays start with zero
and, NULL is for none

For octal, use zero
0x means hex
= will set
== means test

use -> for a pointer
a dot if its not
? : is confusing
 use them a lot

a.out is your program
there's no U in foobar
and, char (*(*x())[])() is...

Кто сможет закончить?

               

               

Heledirn

  • Гость
Re: Программерские приколы.
« Ответ #16 : 03/12/2004, 19:10:19 »
Такая вот задача: есть массив, нужно получить из него другой, выбрав по условию определенные элементы. Как это сделать наиболее просто. На любом языке. Со своей стороны предлагаю Python:
Код:
array2 = [x for x in array1 if some_condition]


               

               

Mrrl

  • Гость
Re: Программерские приколы.
« Ответ #17 : 20/01/2005, 20:58:57 »
На C#:
Код:
ArrayList a=new ArrayList();
foreach(object x in b) if(cond(x)) a.Add(x);


Интроспективная программа - 104 символа (не проверялось)
Код:
a="a=;b=';?$(a,1,2)+b+$a(1,50)+b+$(a,3,4)+b+$(a,6,45)";b='"';
?$(a,1,2)+b+$a(1,50)+b+$(a,3,4)+b+$(a,6,45)


Она же на C. Получилась заметно короче - 76 символов
Код:
main(){char*a="main(){char*a=%c%s%c;printf(a,34,a,34);}";printf(a,34,a,34);}



               

               

Mrrl

  • Гость
Re: Программерские приколы.
« Ответ #18 : 21/01/2005, 09:42:10 »
Точки на окружности представлены 32-битными целыми числами (каждому числу соответствует своя точка, полная длина окружности равна 2^32). Заданы две дуги: одна от a до b, другая - от c до d (концы включаются. Например при a=-2, b=2 дуга состоит из 5 точек, а при a=2, b=-2 - из 2^32-3). Как проще всего проверить, есть ли у этих дуг общие точки?

               

               

Mrrl

  • Гость
Re: Программерские приколы.
« Ответ #19 : 24/01/2005, 15:07:30 »

Цитата из: Heledirn on 03-12-2004, 19:10:19
Такая вот задача: есть массив, нужно получить из него другой, выбрав по условию определенные элементы. Как это сделать наиболее просто. На любом языке.


какой-то диалект LISP (но я не писал на нем лет 8, так что наверняка с ошибками)
Код:
(remove nil (mapcar (lambda (x) (and (test x) x)) a))
предполагается, что nil в исходном массиве нет или что (test nil) не выполняется.