Форум Всеукраїнської інтернет-олімпіади NetOI


На форумі обговорюються лише питання, пов'язані з олімпіадою

Ви не зайшли.

#1 2005-10-13 20:23:17

Rybak
Олімпієць
Звідки: Киев, Украина
Зареєстрований: 2005-10-04
Повідомлень: 83
Вебсайт

-1й (минус первый) тур ;)

Ради интереса, и если модераторы не против, давайте устроим конкурс на самую короткую программу на паскале или си (отдельно 2 конкурса), которая выводит свой текст на экран. Пробелы и лайнбрейки не в счет. Постим сюда.

П.С. Не надо плиз решений которые ищут прогу в памяти и злобно ее дизассемблируют, или просто читают с диска wink

Поза форумом

 

#2 2005-10-13 21:08:11

Ivan
Олімпієць
Зареєстрований: 2005-10-09
Повідомлень: 218

Re: -1й (минус первый) тур ;)

Код:

var a:array[1..100]of string;i:integer;
begin
a[2]:=' var a:array[1..100]of string;i:integer;';
a[3]:='begin';
a[4]:='for i:=2 to 3 do writeln(a[i])';
a[5]:='for i:=2 to 11 do begin';
a[6]:=' write(chr(97),chr(91),i);';
a[7]:=' write(chr(93),chr(58),chr(61));';
a[8]:=' writeln(chr(39),a[i],chr(39),chr(59));';
a[9]:='end;';
a[10]:='for i:=4 to 11 do writeln(a[i])';
a[11]:='end.';
for i:=2 to 3 do writeln(a[i]);
for i:=2 to 11 do begin
    write(chr(97),chr(91),i);
    write(chr(93),chr(58),chr(61));
    writeln(chr(39),a[i],chr(39),chr(59));
end;
for i:=4 to 11 do writeln(a[i]);
end.

ICQ 233-416-344

Поза форумом

 

#3 2005-10-16 15:48:35

Andrey
Олімпієць
Звідки: Киев, Украина
Зареєстрований: 2005-10-15
Повідомлень: 100

Re: -1й (минус первый) тур ;)

var s,k,l,b,t,c:string;begin s:='var s,k,l,b,t,c:string;begin s:=';
c:=chr(39);t:=c+chr(59);l:=chr(98)+s[31]+s[32];k:='c:=chr(39);t:=c+chr(59);l:=chr(98)+s[31]+s[32];k:=';
b:='writeln(s,c,s,t);writeln(k,c,k,t);writeln(l,c,m,t);writeln(m);end.';
writeln(s,c,s,t);writeln(k,c,k,t);writeln(l,c,b,t);writeln(b);end.

Відредаговано Andrey (2005-10-16 20:10:37)

Поза форумом

 

#4 2005-10-16 20:09:05

Andrey
Олімпієць
Звідки: Киев, Украина
Зареєстрований: 2005-10-15
Повідомлень: 100

Re: -1й (минус первый) тур ;)

А вот еще меньше:
const i=chr(98)+chr(61);c=chr(39);l=c+chr(59);s='const i=chr(98)+chr(61);c=chr(39);l=c+chr(59);s=';
b='begin writeln(s,c,s,l);write(i,c,b,l);write(b);end.';begin writeln(s,c,s,l);write(i,c,b,l);write(b);end.

Поза форумом

 

#5 2005-10-17 09:32:20

Rybak
Олімпієць
Звідки: Киев, Украина
Зареєстрований: 2005-10-04
Повідомлень: 83
Вебсайт

Re: -1й (минус первый) тур ;)

Круто! А еще меньше? Хотя бы на десяток символов?

Поза форумом

 

#6 2005-10-17 15:51:49

Andrey
Олімпієць
Звідки: Киев, Украина
Зареєстрований: 2005-10-15
Повідомлень: 100

Re: -1й (минус первый) тур ;)

const i=chr(98)+chr(61);c=chr(39);l=c+chr(59);s='const i=chr(98)+chr(61);c=chr(39);l=c+chr(59);s=';
b='begin writeln(s,c,s,l);write(i,c,b,l,b);end.';begin writeln(s,c,s,l);write(i,c,b,l,b);end.

Поза форумом

 

#7 2005-10-17 18:07:06

Rybak
Олімпієць
Звідки: Киев, Украина
Зареєстрований: 2005-10-04
Повідомлень: 83
Вебсайт

Re: -1й (минус первый) тур ;)

Круто! А еще на десяток? wink

Поза форумом

 

#8 2005-10-18 08:16:29

reiten
журі
Звідки: Киев
Зареєстрований: 2005-10-16
Повідомлень: 196

Re: -1й (минус первый) тур ;)

Сишники! Вы где? Подтягиваемся!smile А вот такая программа(120 байт):

Код:

#include<stdio.h>
char*s="#include<stdio.h>%cchar*s=%c%s%c;main(){printf(s,10,34,s,34);}";main(){printf(s,10,34,s,34);}

"...Существуют два подхода к проектированию программ. В одном архитектура делается настолько простой, что в ней явно нет дефектов; в другом - настолько сложной, что в ней нет явных дефектов".
С. А. Хоар

Поза форумом

 

#9 2005-10-18 13:38:58

engineer
Олімпієць
Зареєстрований: 2005-10-18
Повідомлень: 12

Re: -1й (минус первый) тур ;)

Привіт від сяшників до Олімпійця. Я трохи покодив і в мене є текст на 105 байт. smile

Код:

#include <stdio.h>
main(){char c;FILE *f=fopen("short.cpp","r+");while(c!=EOF)fputc(c=fgetc(f),stdout);}

Хто може краще - пишіть

Поза форумом

 

#10 2005-10-18 14:00:24

engineer
Олімпієць
Зареєстрований: 2005-10-18
Повідомлень: 12

Re: -1й (минус первый) тур ;)

Ще одне. Якщо назву файлу поміняти на 1.с, то розмір коду стає 98 байт smile і виглядить так.

Код:

#include <stdio.h>
main(){char c;FILE *f=fopen("1.c","r");while(c!=EOF)fputc(c=fgetc(f),stdout);}

Поза форумом

 

#11 2005-10-18 14:36:42

Fokysnik
Олімпієць
Звідки: Львів
Зареєстрований: 2005-10-05
Повідомлень: 51

Re: -1й (минус первый) тур ;)

engineer прочитай саме перше повідомлення цієї теми

Rybak написав:

Не надо плиз решений которые ищут прогу в памяти и злобно ее дизассемблируют, или просто читают с диска wink

твоя прога читає файл свого ж тексту
smile smile smile smile smile smile smile smile smile smile smile smile smile smile smile smile


all software must be free
ICQ: 233-537-226

Поза форумом

 

#12 2005-10-18 15:57:25

Rybak
Олімпієць
Звідки: Киев, Украина
Зареєстрований: 2005-10-04
Повідомлень: 83
Вебсайт

Re: -1й (минус первый) тур ;)

smile

Еще можно предложить отдельно рассматривать программы на, так сказать, абстрактном паскале, т.е. без аппаратной привязки. Я имею ввиду использование таблицы символов ASCII. Я не уверен что chr(34) даже сейчас выдаст кавычку на любой платформе, а использование chr значительно расширяет возможности. Давайте еще попробуем без этого.

П.С. Андрей, твой код еще можно уменьшить, давай! wink

П.П.С reiten - круто; интересно, можно ли меньше?

Поза форумом

 

#13 2005-10-18 18:27:33

Ivan
Олімпієць
Зареєстрований: 2005-10-09
Повідомлень: 218

Re: -1й (минус первый) тур ;)

попытался улучшить код андрея

const i=chr(59)+chr(98)+chr(61);c=chr(39);s='const i=chr(59)+chr(98)+chr(61);c=chr(39);s=';
b=';begin write(s,c,s,c,i,c,b,c,b);end.';begin write(s,c,s,c,i,c,b,c,b);end.


ICQ 233-416-344

Поза форумом

 

#14 2005-10-18 19:49:08

Rybak
Олімпієць
Звідки: Киев, Украина
Зареєстрований: 2005-10-04
Повідомлень: 83
Вебсайт

Re: -1й (минус первый) тур ;)

Ivan написав:

попытался улучшить код андрея

const i=chr(59)+chr(98)+chr(61);c=chr(39);s='const i=chr(59)+chr(98)+chr(61);c=chr(39);s=';
b=';begin write(s,c,s,c,i,c,b,c,b);end.';begin write(s,c,s,c,i,c,b,c,b);end.

А перевод строки вывести? В турбо паскале строки не больше 128 символов

Поза форумом

 

#15 2005-10-18 20:07:46

Ivan
Олімпієць
Зареєстрований: 2005-10-09
Повідомлень: 218

Re: -1й (минус первый) тур ;)

Rybak написав:

. Пробелы и лайнбрейки не в счет.


ICQ 233-416-344

Поза форумом

 

#16 2005-10-18 20:18:54

Ivan
Олімпієць
Зареєстрований: 2005-10-09
Повідомлень: 218

Re: -1й (минус первый) тур ;)

const i=#10#13+chr(59)+chr(98)+chr(61);c=chr(39);s='const i=#10#13+chr(59)+chr(98)+chr(61);c=chr(39);s=';
b=';begin write(s,c,s,c,i,c,b,c,b);end.';begin write(s,c,s,c,i,c,b,c,b);end.


ICQ 233-416-344

Поза форумом

 

#17 2005-10-19 04:41:11

Andrey
Олімпієць
Звідки: Киев, Украина
Зареєстрований: 2005-10-15
Повідомлень: 100

Re: -1й (минус первый) тур ;)

Иван. У тебя один символ ";" переносится во вторую строку.

Rybak написав:

smile

Еще можно предложить отдельно рассматривать программы на, так сказать, абстрактном паскале, т.е. без аппаратной привязки. Я имею ввиду использование таблицы символов ASCII. Я не уверен что chr(34) даже сейчас выдаст кавычку на любой платформе, а использование chr значительно расширяет возможности.

А ковычка, это 39й код smile. Так что, написать без чара?

Поза форумом

 

#18 2005-10-19 08:09:50

Rybak
Олімпієць
Звідки: Киев, Украина
Зареєстрований: 2005-10-04
Повідомлень: 83
Вебсайт

Re: -1й (минус первый) тур ;)

Andrey написав:

А ковычка, это 39й код smile. Так что, написать без чара?

Двойная кавычка - это 34й smile

Ну да, напиши. А твой код все-таки можно уменьшить, сильнее чем предложил Иван.

Поза форумом

 

#19 2005-10-29 11:14:19

ROBOT
Олімпієць
Звідки: Ялта
Зареєстрований: 2005-10-26
Повідомлень: 158

Re: -1й (минус первый) тур ;)

144 Байт:
CONST S:STRING='CONST S:STRING=;BEGIN WRITE(COPY(S,1,15)+#39+S+#39+COPY(S,16,70));END.'
;BEGIN WRITE(COPY(S,1,15)+#39+S+#39+COPY(S,16,70));END.

Відредаговано ROBOT (2005-10-29 11:49:52)


I have Delphi 7, BP 7.0, FP 1.0.4, Windows XP
Мои решения олимпиад на  Паскале: http://h0h0l.narod.ru/
Моя проверялка: http://www.proveryalka.narod.ru/
ICQ: 266367671

Поза форумом

 

#20 2005-10-29 11:52:58

ROBOT
Олімпієць
Звідки: Ялта
Зареєстрований: 2005-10-26
Повідомлень: 158

Re: -1й (минус первый) тур ;)

Ещё вариант:
uses my; Begin k; End.
(в модуле my проц. k)


I have Delphi 7, BP 7.0, FP 1.0.4, Windows XP
Мои решения олимпиад на  Паскале: http://h0h0l.narod.ru/
Моя проверялка: http://www.proveryalka.narod.ru/
ICQ: 266367671

Поза форумом

 

#21 2005-10-29 14:29:44

Rybak
Олімпієць
Звідки: Киев, Украина
Зареєстрований: 2005-10-04
Повідомлень: 83
Вебсайт

Re: -1й (минус первый) тур ;)

Ivan написав:

Rybak написав:

. Пробелы и лайнбрейки не в счет.

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

Поза форумом

 

#22 2005-10-29 14:43:41

Rybak
Олімпієць
Звідки: Киев, Украина
Зареєстрований: 2005-10-04
Повідомлень: 83
Вебсайт

Re: -1й (минус первый) тур ;)

ROBOT написав:

144 Байт:
CONST S:STRING='CONST S:STRING=;BEGIN WRITE(COPY(S,1,15)+#39+S+#39+COPY(S,16,70));END.'
;BEGIN WRITE(COPY(S,1,15)+#39+S+#39+COPY(S,16,70));END.

Прикольно.

1) Замена chr на # это действительно круто
2) Использование copy() очень портится тем, что в борланд паскале нельзя его применять если константа не описана как String - обидно, но из-за этого copy() менее выгодна чем использование нескольких переменных, как у Андрея.
3) Ты не выводишь перевод строки.
4) Давай на 10 символов меньше? wink

Поза форумом

 

#23 2005-10-29 14:47:23

Rybak
Олімпієць
Звідки: Киев, Украина
Зареєстрований: 2005-10-04
Повідомлень: 83
Вебсайт

Re: -1й (минус первый) тур ;)

ROBOT написав:

Ещё вариант:
uses my; Begin k; End.
(в модуле my проц. k)

Прикольно smile

Я уже думал о том, что можно специальный язык Retro сделать, в котором нету главных Begin-End или {} (т.е. обрамляющих тело программы), весь остальной синтаксис - как в Паскале, и есть встроенная процедура U, которая выводит символ U на экран smile. На таком языке решение бы состояло из одного символа U.

Поза форумом

 

#24 2005-10-30 00:48:06

Andrey
Олімпієць
Звідки: Киев, Украина
Зареєстрований: 2005-10-15
Повідомлень: 100

Re: -1й (минус первый) тур ;)

Я тут значит отлучался не на долго (писал игрушку Го в паскале и до сих пор пишу на нее соперника), а вы тут уже понапридумывали... Молодцы... Посмотрев и оценив... Думаю эта прога короче (не считая язык ретро):

uses q;begin end.

Вот мой юнит:

unit q;
interface
implementation
begin
write('uses q;begin end.');
end.

В юните стоит постоянный вывод при использовании...
Итого 17 байт... Я думаю что создание Ретро не совсем удачная идея, так как в у словии писалось про паскаль и си.
Еще на 10 символов? smile

Поза форумом

 

#25 2005-10-30 11:16:16

Rybak
Олімпієць
Звідки: Киев, Украина
Зареєстрований: 2005-10-04
Повідомлень: 83
Вебсайт

Re: -1й (минус первый) тур ;)

Andrey написав:

Я тут значит отлучался не на долго (писал игрушку Го в паскале и до сих пор пишу на нее соперника), а вы тут уже понапридумывали... Молодцы... Посмотрев и оценив... Думаю эта прога короче (не считая язык ретро):

uses q;begin end.

Вот мой юнит:

unit q;
interface
implementation
begin
write('uses q;begin end.');
end.

В юните стоит постоянный вывод при использовании...
Итого 17 байт... Я думаю что создание Ретро не совсем удачная идея, так как в у словии писалось про паскаль и си.
Еще на 10 символов? smile

Да. тут на 10 символов врядли smile, но я про Ретро писал к тому, что решения с модулем типа твоего - этот примерно так же честно, как язык Ретро smile. В принципе прикольно, но по сути, твоя программа состоит из двух частей, одна из которых выводит другую. А надо чтоб всю.

Так что это тоже не совсем то что в условии. А вот программу ROBOTа можно уменьшить.

Поза форумом

 

Нижній колонтитул

Powered by Likt
© Copyright 2002–2009 Likt