Re: Size-contest
От: DK3981 Россия  
Дата: 23.06.05 09:25
Оценка: :)))
С>При подсчете размера исходника не учитываются символы с кодом <= 32.

Надо писать на whitespace
... << RSDN@Work 1.1.3 stable >>
Clannad — Bruach na carriage baine
Standarts are great, everyone should have one!
Re[4]: Size-contest
От: Alex Alexandrov США  
Дата: 26.06.05 19:32
Оценка: +2
Здравствуйте, Кодт, Вы писали:

К>А кто будет обнулять s?


Есть воспоминание (не могу найти в стандарте), что глобальные переменные автоматически инициализуруются нулями.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
It's kind of fun to do the impossible (Walt Disney)
Re[2]: Size-contest_80
От: _DAle_ Беларусь  
Дата: 23.06.05 21:39
Оценка: 3 (1)
Н>Получилось только 80 (если убрать пробел после int):

Н>
Н>main(){for(int s=0,n=0,i,*k=&i;scanf("%d",k),s+=n*=n>0,i--;k=&n);printf("%d",s);}
Н>


Н>IMHO, для стандартного С это предел


n,j,s,*k=&n;main(){for(;scanf("%d",k),s+=j>0?j:0,n--;k=&j);printf("%d",s);}



А используя твою идею, (за нее отдельное спасибо, смог на с++ уменьшить на 1 байт исходник до 78 вместе с #include )
n,j,s,*k=&n;main(){for(;scanf("%d",k),s+=j*=j>0,n--;k=&j);printf("%d",s);}
Re: Size-contest_80
От: Нэчер  
Дата: 23.06.05 18:55
Оценка: 1 (1)
Здравствуйте, Сергей, Вы писали:

С>Здравствуйте.

С>Осмелюсь предложить такую задачу:

С>
С>Вам дан набор чисел, найдите сумму всех положительных чисел в нем. 

С>Входные данные
С>В первой строке записано количество чисел N (0 <= N <= 1000). 
С>Затем следует N целых чисел, по модулю не превосходящих 1000. 

С>Выходные данные
С>Выведите единственное целое число -- сумму положительных чисел из данного набора.

С>Ввод: stdin
С>Вывод: stdout
С>


С>При подсчете размера исходника не учитываются символы с кодом <= 32.


С>Это задача с нашего университетского соревнования. Пока (и довольно давно) там побеждают дельфисты — 76 байт. Мне удалось написать решение для BCC 5.5 размером 76 байт, но оно не компилируется на предлагаемх VC7.1, GCC3.


Получилось только 80 (если убрать пробел после int):

main(){for(int s=0,n=0,i,*k=&i;scanf("%d",k),s+=n*=n>0,i--;k=&n);printf("%d",s);}


IMHO, для стандартного С это предел
Re: Size-contest
От: Сергей  
Дата: 23.06.05 21:51
Оценка: 1 (1)
Здравствуйте, Сергей, Вы писали:

С>Здравствуйте.

С>Осмелюсь предложить такую задачу:

С>
С>Вам дан набор чисел, найдите сумму всех положительных чисел в нем. 

С>Входные данные
С>В первой строке записано количество чисел N (0 <= N <= 1000). 
С>Затем следует N целых чисел, по модулю не превосходящих 1000. 

С>Выходные данные
С>Выведите единственное целое число -- сумму положительных чисел из данного набора.

С>Ввод: stdin
С>Вывод: stdout
С>


С>При подсчете размера исходника не учитываются символы с кодом <= 32.


С>Это задача с нашего университетского соревнования. Пока (и довольно давно) там побеждают дельфисты — 76 байт. Мне удалось написать решение для BCC 5.5 размером 76 байт, но оно не компилируется на предлагаемх VC7.1, GCC3.

#include <fstream>
int n, s, p;
main ()
{
 for (cin>>n;n--;) cin>>p, s+=p>0?p:0;
 cout<<s;
}

Но это компилируется BCC5.5 VC7 и GCC3 не берут.
Re: Size-contest
От: Аноним  
Дата: 05.07.05 13:19
Оценка: 1 (1)
Самые прикольные решения:
PERL:
16 символов — код сюда выложить не могу так как он содержит нечитаемые символы, все основано на операторе "s". Очень забавно выглядит, все в квадратиках. =)
21 символ:
print 0+ map 1..<>,1..<>


LISP:
47 символов:
(print (loop repeat (read)
             for r = (read)
             if (> r 0)
               sum r))


HASK:
58 символов:
 g(x:y)=take x y
 main=interact $ show.sum.g.map (max 0.read).words


С++:
74 символа:
#include<algo.h> 
int n,j,s;

main()
{
    for (cin >> n; n--;)
        cin >> j,
        s += j *= j>0;    
    cout << s;
}


С:
75 символов: (Приз зрительских симпатий!)

 n,i,s;main(){for(;scanf("%d",&n+!i--),s+=n*=n>0,i;);return!printf("%d",s);}



Pascal:
85 символов:

var j,s,n:int64;
begin
  read(n);
  repeat
    read(j);
    if j>0 then s:=s+j;
    dec(n)
  until n=0;
  write(s)
end.
Re: Size-contest
От: Кодт Россия  
Дата: 23.06.05 09:08
Оценка: :)
Здравствуйте, Сергей, Вы писали:

С>Это задача с нашего университетского соревнования. Пока (и довольно давно) там побеждают дельфисты — 76 байт. Мне удалось написать решение для BCC 5.5 размером 76 байт, но оно не компилируется на предлагаемх VC7.1, GCC3.


basic, 72 байта
1 input n%
2 for i%=1 to n%
3 input v%
4 s%=s%+v%
5 next
6 ? s%
Перекуём баги на фичи!
Re: Size-contest
От: vic82  
Дата: 24.06.05 07:41
Оценка: +1
77 символов.



#define Q ("%d",

n,x,s;

main()
{
    for (scanf Q &n); n--; s+=x*(x>0)) scanf Q &x);
    printf Q s);
}
Re[5]: Size-contest
От: Кодт Россия  
Дата: 24.06.05 16:19
Оценка: +1
Здравствуйте, _DAle_, Вы писали:

_DA>Во-вторых, надо бы добавить, что whitespace использовать нельзя.


Надо изменить требования к подсчёту. Сказать, что пробелы и переводы строк УЧИТЫВАЮТСЯ, и пусть народ сам выжимает всё возможное.
Ибо в паскале пробелы являются служебными символами: сравни
if true then x:=0;
iftruethenx:=0;

а в Си и переводы строк кое-где (в #инструкциях) существенны.

Вот тогда и будет очевидно, что whitespace (будучи очень низкоуровневым языком) проиграет, наряду с brainfuck и т.п.
Перекуём баги на фичи!
Size-contest
От: Сергей  
Дата: 23.06.05 08:50
Оценка:
Здравствуйте.
Осмелюсь предложить такую задачу:

Вам дан набор чисел, найдите сумму всех положительных чисел в нем. 

Входные данные
В первой строке записано количество чисел N (0 <= N <= 1000). 
Затем следует N целых чисел, по модулю не превосходящих 1000. 

Выходные данные
Выведите единственное целое число -- сумму положительных чисел из данного набора.

Ввод: stdin
Вывод: stdout


При подсчете размера исходника не учитываются символы с кодом <= 32.

Это задача с нашего университетского соревнования. Пока (и довольно давно) там побеждают дельфисты — 76 байт. Мне удалось написать решение для BCC 5.5 размером 76 байт, но оно не компилируется на предлагаемх VC7.1, GCC3.
Re[2]: Size-contest
От: o.kostya  
Дата: 23.06.05 09:27
Оценка:
Здравствуйте, Кодт, Вы писали:

К>basic, 72 байта

К>
К>1 input n%
К>2 for i%=1 to n%
К>3 input v%
К>4 s%=s%+v%
К>5 next
К>6 ? s%
К>


а отрицательные?
... << RSDN@Home 1.1.3 stable >>
Re[3]: Size-contest
От: Кодт Россия  
Дата: 23.06.05 10:11
Оценка:
Здравствуйте, o.kostya, Вы писали:

OK>а отрицательные?


Ой, проглядел в условии.
Перекуём баги на фичи!
Re: Size-contest
От: Кодт Россия  
Дата: 23.06.05 10:28
Оценка:
K&R Си
#define R (scanf("%d",&t),t>0?t:0)
main(){int t,n=R,s=0;for(;n--;s+=R);printf("%d",s);}

Что-то не получается меньше 87 символов (включая 3 обязательных пробела и 1 LF).
Перекуём баги на фичи!
Re[2]: Size-contest
От: WinterMute Россия http://yarrr.ru
Дата: 23.06.05 10:47
Оценка:
Здравствуйте, Кодт, Вы писали:

К>K&R Си

К>
К>#define R (scanf("%d",&t),t>0?t:0)
К>main(){int t,n=R,s=0;for(;n--;s+=R);printf("%d",s);}
К>

К>Что-то не получается меньше 87 символов (включая 3 обязательных пробела и 1 LF).

Можно переписать на "OlimpiadaC". "OlimpiadaC" это обычный "C" у которого переопределены ключевые слова и названия библиотечных функций:

for -- fr
#define -- #def
main() -- mn()
scanf() -- sf()
printf() -- pf()

Получается 74 символа.
Re[2]: Size-contest
От: Сергей  
Дата: 23.06.05 10:53
Оценка:
Здравствуйте, Кодт, Вы писали:

К>K&R Си

К>
К>#define R (scanf("%d",&t),t>0?t:0)
К>main(){int t,n=R,s=0;for(;n--;s+=R);printf("%d",s);}
К>

К>Что-то не получается меньше 87 символов (включая 3 обязательных пробела и 1 LF).
Здесь 83 символа.
Пробелы не считаются. Но, я так понял. это на С (не С++)?
Такой исходник на С++ у меня не компилируется (ВСС5.5 такой файл с расширением С скомпилируе, а С++ — нет).
А прога на сервер для проверки загружается через HTML-форму, так что в какой файл там исходник сохраняют, никто не знает.
А у меня так:
int n, s, p, *o = "%d";
main ()
{
 for (scanf (o, &n); n--;) scanf (o, &p), s += p>0 ? p:0;
 printf (o, s);
}

81 символ.
Re[3]: Size-contest
От: Сергей  
Дата: 23.06.05 10:55
Оценка:
Здравствуйте, Сергей, Вы писали:

С>Здравствуйте, Кодт, Вы писали:


К>>K&R Си

К>>
К>>#define R (scanf("%d",&t),t>0?t:0)
К>>main(){int t,n=R,s=0;for(;n--;s+=R);printf("%d",s);}
К>>

К>>Что-то не получается меньше 87 символов (включая 3 обязательных пробела и 1 LF).
С>Здесь 83 символа.
С>Пробелы не считаются. Но, я так понял. это на С (не С++)?
С>Такой исходник на С++ у меня не компилируется (ВСС5.5 такой файл с расширением С скомпилируе, а С++ — нет).
С>А прога на сервер для проверки загружается через HTML-форму, так что в какой файл там исходник сохраняют, никто не знает.
С>А у меня так:
С>
С>int n, s, p, *o = "%d";
С>main ()
С>{
С> for (scanf (o, &n); n--;) scanf (o, &p), s += p>0 ? p:0;
С> printf (o, s);
С>}
С>

С>81 символ.
Упс. .cpp, разумеется.
Re[3]: Size-contest
От: Сергей  
Дата: 23.06.05 10:56
Оценка:
Здравствуйте, WinterMute, Вы писали:

WM>Здравствуйте, Кодт, Вы писали:


К>>K&R Си

К>>
К>>#define R (scanf("%d",&t),t>0?t:0)
К>>main(){int t,n=R,s=0;for(;n--;s+=R);printf("%d",s);}
К>>

К>>Что-то не получается меньше 87 символов (включая 3 обязательных пробела и 1 LF).

WM>Можно переписать на "OlimpiadaC". "OlimpiadaC" это обычный "C" у которого переопределены ключевые слова и названия библиотечных функций:


WM>for -- fr

WM>#define -- #def
WM>main() -- mn()
WM>scanf() -- sf()
WM>printf() -- pf()

WM>Получается 74 символа.

Это конечно можно. Но сами переопределения тоже символы занимают!
Re: Size-contest
От: Константин Россия  
Дата: 23.06.05 11:04
Оценка:
Здравствуйте, Сергей, Вы писали:

С>Здравствуйте.

С>Осмелюсь предложить такую задачу:

python можно?

import sys
print sum(map(lambda x:max(0,int(x)),sys.stdin)[1:])


60 без учётов \n, ' '.
64 размер файла

P.S. сейчас появятся знатоки perl и пойдёт вечеринка
Re[2]: Size-contest
От: Трурль  
Дата: 23.06.05 11:17
Оценка:
Здравствуйте, Константин, Вы писали:

К>P.S. сейчас появятся знатоки perl и пойдёт вечеринка

perl не perl, но 16 символов.
+/{x|0}0$1 _0:""
Re: Size-contest
От: Аноним  
Дата: 23.06.05 11:31
Оценка:
Здравствуйте, Сергей, Вы писали:

С>Здравствуйте.

С>Осмелюсь предложить такую задачу:

С>
С>Вам дан набор чисел, найдите сумму всех положительных чисел в нем. 

С>Входные данные
С>В первой строке записано количество чисел N (0 <= N <= 1000). 
С>Затем следует N целых чисел, по модулю не превосходящих 1000. 

С>Выходные данные
С>Выведите единственное целое число -- сумму положительных чисел из данного набора.

С>Ввод: stdin
С>Вывод: stdout
С>


С>При подсчете размера исходника не учитываются символы с кодом <= 32.


С>Это задача с нашего университетского соревнования. Пока (и довольно давно) там побеждают дельфисты — 76 байт. Мне удалось написать решение для BCC 5.5 размером 76 байт, но оно не компилируется на предлагаемх VC7.1, GCC3.


Не против если я эту задачу выложу на сфере? Там куча языков — будет где развернуться =)
Re[3]: Size-contest
От: Кодт Россия  
Дата: 23.06.05 11:32
Оценка:
Здравствуйте, Сергей, Вы писали:

С>Здравствуйте, Кодт, Вы писали:


К>>K&R Си

К>>
К>>#define R (scanf("%d",&t),t>0?t:0)
К>>main(){int t,n=R,s=0;for(;n--;s+=R);printf("%d",s);}
К>>

К>>Что-то не получается меньше 87 символов (включая 3 обязательных пробела и 1 LF).
С>Здесь 83 символа.
С>Пробелы не считаются. Но, я так понял. это на С (не С++)?

Некошерно не считать ОБЯЗАТЕЛЬНЫЕ пробелы и переводы строки.
Разумеется, это не С++, а С (я даже не уверен, соответствует ли он С90).

С>Такой исходник на С++ у меня не компилируется (ВСС5.5 такой файл с расширением С скомпилируе, а С++ — нет).


Многие компиляторы поддерживают и С++, и С — различают языки по расширению файла или по опции в командной строке.

С>А у меня так:

С>int n, s, p, *o = "%d";
С>main ()
С>{
С> for (scanf (o, &n); n--;) scanf (o, &p), s += p>0 ? p:0;
С> printf (o, s);
С>}

С>81 символ.

Ход с int*o="%d" — это
А кто будет обнулять s?

Кстати, полностью беспробельная версия:
main(){int*o="%d",n,v,s=0;for(scanf(o,&n);n--;)scanf(o,&v),s+=v>0?v:0;printf(o,s);}
Перекуём баги на фичи!
Re[2]: Size-contest
От: DK3981 Россия  
Дата: 23.06.05 11:47
Оценка:
С>>При подсчете размера исходника не учитываются символы с кодом <= 32.

DK>Надо писать на whitespace


Читаем N:
[Space][Space][Space][Space][LF] - 0 на стек
[Tab][LF][Tab][Tab]     -  прочитать число в 0ю ячейку памяти
[Space][Space][Space][Space][LF] - 0 на стек
[Tab][Tab][Tab] - из 0й ячейки на стек.

[Space][Space][Space][Space][LF]     -  0 на стек

--Здесь всегда на стеке лежат 2 числа. Количество оставшихся итераций и текущая сумма
[LF][Tab][Space][Space][Space][LF]  - метка [Space][Space].

[Space][Tab][Space][Space][Tab][LF] - Скопировали число итераций на верхушку стека.
[LF][Tab][Space][Space][LF]  - Если 0, то перейти к метке [Space].

Читаем A[i]:
[Space][Space][Space][Space][LF] - 0 на стек
[Tab][LF][Tab][Tab]     -  прочитать число в 0ю ячейку памяти
[Space][Space][Space][Space][LF] - 0 на стек
[Tab][Tab][Tab] - из 0й ячейки на стек.

[Space][LF][Space] - Дублируем его

[LF][Tab][Tab][Tab][LF] - Переход к метке [Tab] если число отрицательно.

[Tab][Space][Space][Space] - сложили верхние числа на стеке
[Space][LF][Space] - Дублируем результат

[LF][Space][Space][Tab][LF] - Метка [Tab]
[Space][LF][LF] - выкинули верхний элемент стека (отрицательное число или дублированный результат).
--Здесь всегда на стеке лежат 2 числа. Количество оставшихся итераций и текущая сумма
[Space][LF][Tab] - Swap stack
[Space][Space][Space][Tab][LF] - 1 на стек
[Tab][Space][Space][Tab] - вычитание
[Space][LF][Tab] - Swap stack
--Здесь всегда на стеке лежат 2 числа. Количество оставшихся итераций и текущая сумма
[LF][Space][LF][Space][Space][LF] - Переход к метке [Space] [Space] .
[Tab][LF][Space][Tab] - вывести число на стеке
[LF][LF][LF] - Закончить

8*3 + 4*4 + 9*5 + 3*6 = 103 символа, из них непробельных — 0.
... << RSDN@Work 1.1.3 stable >>
Clannad — Robin (the hooded man)
Standarts are great, everyone should have one!
Re: Size-contest
От: Аноним  
Дата: 23.06.05 11:50
Оценка:
Задача готова:
https://spoj.sphere.pl/problems/SIZECON/

Добавил все возможные языки — можно тестить. =)
Re[3]: Size-contest
От: Трурль  
Дата: 23.06.05 12:11
Оценка:
Здравствуйте, Трурль, Вы писали:
И даже 12
+/0|0$1_0:""
Re[2]: Size-contest
От: Аноним  
Дата: 23.06.05 13:01
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Задача готова:

А>https://spoj.sphere.pl/problems/SIZECON/

А>Добавил все возможные языки — можно тестить. =)


Не забываем про код возврата — должен быть 0.
Re: Size-contest
От: Socrat Россия  
Дата: 23.06.05 14:18
Оценка:
main(){int t,s=0,n;cin>>n;while(n--){cin>>t;if(t>0)s+=t;}cout<<s;}
Re[2]: Size-contest
От: Трурль  
Дата: 23.06.05 14:19
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Добавил все возможные языки — можно тестить. =)

Ай, какую бяку подсунули в тесте!
Re[2]: Size-contest
От: Кодт Россия  
Дата: 23.06.05 14:24
Оценка:
Здравствуйте, Socrat, Вы писали:

S>main(){int t,s=0,n;cin>>n;while(n--){cin>>t;if(t>0)s+=t;}cout<<s;}

Забыто #include<iostream.h>
Перекуём баги на фичи!
Re[3]: Size-contest
От: Аноним  
Дата: 23.06.05 14:31
Оценка:
Здравствуйте, Трурль, Вы писали:

Т>Здравствуйте, Аноним, Вы писали:


А>>Добавил все возможные языки — можно тестить. =)

Т>Ай, какую бяку подсунули в тесте!

А это что бы не халявили ^_^
Re[3]: Size-contest
От: Socrat Россия  
Дата: 23.06.05 14:46
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, Socrat, Вы писали:


К>
S>>main(){int t,s=0,n;cin>>n;while(n--){cin>>t;if(t>0)s+=t;}cout<<s;}
К>

К>Забыто #include<iostream.h>

Используем опции командной строки

А здесь
Автор: Кодт
Дата: 23.06.05
забыто #include<stdio.h>
Re[4]: Size-contest
От: Кодт Россия  
Дата: 23.06.05 14:56
Оценка:
Здравствуйте, Socrat, Вы писали:

К>>Забыто #include<iostream.h>


S>Используем опции командной строки


Хитёр брат, хитёр!

S>А здесь
Автор: Кодт
Дата: 23.06.05
забыто #include<stdio.h>


Не забыто. Это специфика K&R C.
Перекуём баги на фичи!
Re[2]: Size-contest
От: _DAle_ Беларусь  
Дата: 23.06.05 15:53
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Задача готова:

А>https://spoj.sphere.pl/problems/SIZECON/

А>Добавил все возможные языки — можно тестить. =)


Вот за это спасибо
Пока на с++ дожал до 80. Что-то дальше не придумывается, надо крутить.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[2]: Size-contest
От: Сергей  
Дата: 23.06.05 16:04
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Не против если я эту задачу выложу на сфере? Там куча языков — будет где развернуться =)


Думаю, что никто не обидится
Re: Size-contest
От: _DAle_ Беларусь  
Дата: 23.06.05 21:48
Оценка:
Здравствуйте, Сергей, Вы писали:

С>Это задача с нашего университетского соревнования. Пока (и довольно давно) там побеждают дельфисты — 76 байт. Мне удалось написать решение для BCC 5.5 размером 76 байт, но оно не компилируется на предлагаемх VC7.1, GCC3.


Тут http://www.rsdn.ru/Forum/Message.aspx?mid=1238202&amp;only=1
Автор: _DAle_
Дата: 24.06.05
вроде 74 байта на С получилось. Может обгонишь дельфистов А на с++ у меня меньше 78 не получается, там #include нужен.
Re[2]: Size-contest
От: _DAle_ Беларусь  
Дата: 23.06.05 22:26
Оценка:
Здравствуйте, Сергей, Вы писали:

С>Здравствуйте, Сергей, Вы писали:


С>>Здравствуйте.

С>>Осмелюсь предложить такую задачу:

С>>
С>>Вам дан набор чисел, найдите сумму всех положительных чисел в нем. 

С>>Входные данные
С>>В первой строке записано количество чисел N (0 <= N <= 1000). 
С>>Затем следует N целых чисел, по модулю не превосходящих 1000. 

С>>Выходные данные
С>>Выведите единственное целое число -- сумму положительных чисел из данного набора.

С>>Ввод: stdin
С>>Вывод: stdout
С>>


С>>При подсчете размера исходника не учитываются символы с кодом <= 32.


С>>Это задача с нашего университетского соревнования. Пока (и довольно давно) там побеждают дельфисты — 76 байт. Мне удалось написать решение для BCC 5.5 размером 76 байт, но оно не компилируется на предлагаемх VC7.1, GCC3.

С>
С>#include <fstream>
С>int n, s, p;
С>main ()
С>{
С> for (cin>>n;n--;) cin>>p, s+=p>0?p:0;
С> cout<<s;
С>}
С>

С>Но это компилируется BCC5.5 VC7 и GCC3 не берут.

Один в один практически

#include<iomanip.h> 
int n,j,s;
main()
{
    cin >> n; 
    while(n--)
        cin >> j,
        s += j *= j>0;    
    cout << s;
}


Замена while на for и внесение ввода в n в for сэкономит еще один байт Но все равно получится только 77.
Re[2]: Size-contest
От: Сергей  
Дата: 24.06.05 08:26
Оценка:
Здравствуйте, vic82, Вы писали:

V>77 символов.



V>

V>#define Q ("%d",

V>n,x,s;

V>main()
V>{
V>    for (scanf Q &n); n--; s+=x*(x>0)) scanf Q &x);
V>    printf Q s);
V>}

V>


76:

#define Q ("%d",
n,x,s;
main()
{
 for(scanf Q &n);n--;s+=x*=x>0)scanf Q &x);
 printf Q s);
}
Re[2]: Size-contest
От: Трурль  
Дата: 24.06.05 09:19
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Добавил все возможные языки — можно тестить. =)

whitespace забыли
Re[4]: Size-contest
От: Трурль  
Дата: 24.06.05 09:24
Оценка:
Здравствуйте, Socrat, Вы писали:

S>Используем опции командной строки


Дык, эта. В командной строке можно и define сделать
Re[5]: Size-contest
От: Сергей  
Дата: 24.06.05 09:46
Оценка:
Здравствуйте, Трурль, Вы писали:

Т>Здравствуйте, Socrat, Вы писали:


S>>Используем опции командной строки


Т>Дык, эта. В командной строке можно и define сделать


Так обычно на серверах, где проги проверяют, эти опции указать нельзя.
Re[3]: Size-contest
От: Нэчер  
Дата: 24.06.05 11:34
Оценка:
Здравствуйте, Сергей, Вы писали:

С>Здравствуйте, vic82, Вы писали:


V>>77 символов.



V>>

V>>#define Q ("%d",

V>>n,x,s;

V>>main()
V>>{
V>>    for (scanf Q &n); n--; s+=x*(x>0)) scanf Q &x);
V>>    printf Q s);
V>>}

V>>


С>76:


С>
С>#define Q ("%d",
С>n,x,s;
С>main()
С>{
С> for(scanf Q &n);n--;s+=x*=x>0)scanf Q &x);
С> printf Q s);
С>}
С>



74 байта.
НО
Все числа должны задаваться одной строкой, через пробел:

5 1 2 3 -4 5
Результат:
11

n,s,k;main(){for(;scanf("%d%c",&n,&k),s+=n*=n>0,k&32;s--);printf("%d",s);}
Re[2]: Size-contest_74
От: Нэчер  
Дата: 24.06.05 12:10
Оценка:
Здравствуйте, Нэчер, Вы писали:

Н>Здравствуйте, Сергей, Вы писали:


С>>Здравствуйте.

С>>Осмелюсь предложить такую задачу:

С>>
С>>Вам дан набор чисел, найдите сумму всех положительных чисел в нем. 

С>>Входные данные
С>>В первой строке записано количество чисел N (0 <= N <= 1000). 
С>>Затем следует N целых чисел, по модулю не превосходящих 1000. 

С>>Выходные данные
С>>Выведите единственное целое число -- сумму положительных чисел из данного набора.

С>>Ввод: stdin
С>>Вывод: stdout
С>>


С>>При подсчете размера исходника не учитываются символы с кодом <= 32.


С>>Это задача с нашего университетского соревнования. Пока (и довольно давно) там побеждают дельфисты — 76 байт. Мне удалось написать решение для BCC 5.5 размером 76 байт, но оно не компилируется на предлагаемх VC7.1, GCC3.


Н>Получилось только 80 (если убрать пробел после int):


Н>
Н>main(){for(int s=0,n=0,i,*k=&i;scanf("%d",k),s+=n*=n>0,i--;k=&n);printf("%d",s);}
Н>


Н>IMHO, для стандартного С это предел


Беру свою IMHO обратно...

Версия 74 байта!
В тесте имеет 81 байт (из за return!printf("%d",s))

n,s,i,*k=&i;main(){for(;scanf("%d",k),s+=n*=n>0,i--;k=&n);printf("%d",s);}
Re[2]: Size-contest
От: Нэчер  
Дата: 24.06.05 12:17
Оценка:
Здравствуйте, vic82, Вы писали:

V>77 символов.



V>

V>#define Q ("%d",

V>n,x,s;

V>main()
V>{
V>    for (scanf Q &n); n--; s+=x*(x>0)) scanf Q &x);
V>    printf Q s);
V>}

V>


Спасибо за идею, описания глобальных переменных. Здесь
Автор: Нэчер
Дата: 24.06.05
полноценная версия из 74 байт.
Re[3]: Size-contest_74
От: _DAle_ Беларусь  
Дата: 24.06.05 12:20
Оценка:
Здравствуйте, Нэчер, Вы писали:

Н>Версия 74 байта!

Н>В тесте имеет 81 байт (из за return!printf("%d",s))

Н>
Н>n,s,i,*k=&i;main(){for(;scanf("%d",k),s+=n*=n>0,i--;k=&n);printf("%d",s);}
Н>


Ну вот, обогнал А мои месаги не видны что ли? Я вроде еще раньше пример с глобальными переменными постил.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[4]: Size-contest_74
От: Нэчер  
Дата: 24.06.05 12:28
Оценка:
Здравствуйте, _DAle_, Вы писали:

_DA>Ну вот, обогнал А мои месаги не видны что ли? Я вроде еще раньше пример с глобальными переменными постил.


Их я впервые увидел здесь
Автор: vic82
Дата: 24.06.05
, за что и сказал спасибо.
Извини, если не заметил твой пост
Re[3]: Size-contest
От: Аноним  
Дата: 24.06.05 12:31
Оценка:
Здравствуйте, Трурль, Вы писали:

Т>Здравствуйте, Аноним, Вы писали:


А>>Добавил все возможные языки — можно тестить. =)

Т>whitespace забыли

админ убрал у них статистика может навернуться при 0 ...
Надо было мне Judge по другому писать +1 прибавить ..
Re[4]: Size-contest
От: _DAle_ Беларусь  
Дата: 24.06.05 12:41
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Здравствуйте, Трурль, Вы писали:


Т>>Здравствуйте, Аноним, Вы писали:


А>>>Добавил все возможные языки — можно тестить. =)

Т>>whitespace забыли

А>админ убрал у них статистика может навернуться при 0 ...

А>Надо было мне Judge по другому писать +1 прибавить ..

Поправь условие, пожалуйста. Во-первых

t – number of test cases [t < 1000]


Во-вторых, надо бы добавить, что whitespace использовать нельзя.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[5]: _DAle_, sorry :(
От: Нэчер  
Дата: 24.06.05 15:19
Оценка:
Здравствуйте, Нэчер, Вы писали:

Н>Здравствуйте, _DAle_, Вы писали:


_DA>>Ну вот, обогнал А мои месаги не видны что ли? Я вроде еще раньше пример с глобальными переменными постил.


Н>Их я впервые увидел здесь
Автор: vic82
Дата: 24.06.05
, за что и сказал спасибо.

Н>Извини, если не заметил твой пост

AAAAAAAAAAAAAAAAAAA
Я его
Автор: _DAle_
Дата: 24.06.05
увидел

Мда ... нехорошо как то получилось...
ну, в общем, сабж...
Re[6]: _DAle_, sorry :(
От: _DAle_ Беларусь  
Дата: 24.06.05 15:42
Оценка:
Здравствуйте, Нэчер, Вы писали:

Н>Здравствуйте, Нэчер, Вы писали:


Н>>Здравствуйте, _DAle_, Вы писали:


_DA>>>Ну вот, обогнал А мои месаги не видны что ли? Я вроде еще раньше пример с глобальными переменными постил.


Н>>Их я впервые увидел здесь
Автор: vic82
Дата: 24.06.05
, за что и сказал спасибо.

Н>>Извини, если не заметил твой пост

Н>AAAAAAAAAAAAAAAAAAA

Н>Я его
Автор: _DAle_
Дата: 24.06.05
увидел


Н>Мда ... нехорошо как то получилось...

Н>ну, в общем, сабж...

Да ладно, чего уж тут
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[3]: Size-contest_70!!!
От: Нэчер  
Дата: 24.06.05 19:52
Оценка:
Н>>Здравствуйте, Сергей, Вы писали:

С>>>Здравствуйте.

С>>>Осмелюсь предложить такую задачу:

С>>>
С>>>Вам дан набор чисел, найдите сумму всех положительных чисел в нем. 

С>>>Входные данные
С>>>В первой строке записано количество чисел N (0 <= N <= 1000). 
С>>>Затем следует N целых чисел, по модулю не превосходящих 1000. 

С>>>Выходные данные
С>>>Выведите единственное целое число -- сумму положительных чисел из данного набора.

С>>>Ввод: stdin
С>>>Вывод: stdout
С>>>


С>>>При подсчете размера исходника не учитываются символы с кодом <= 32.


С>>>Это задача с нашего университетского соревнования. Пока (и довольно давно) там побеждают дельфисты — 76 байт. Мне удалось написать решение для BCC 5.5 размером 76 байт, но оно не компилируется на предлагаемх VC7.1, GCC3.



Вот хакерский Си вариант программы длинной в 70 байт, прошедший проверку https://spoj.sphere.pl/ranks/SIZECON/
(В таблице результатов он имеет длинну 77 символов из-за return!printf("%d",s))

n,i,s;main(){for(;scanf("%d",&n+!i--),s+=n*=n>0,i>0;);printf("%d",s);}


Если вы попытаетесь запустить этот код на своей машине, то скорее всего получите неверный результат.
Это связано с порядком следования переменных в памяти. Измините 's' на 'i' в тексте программы (изменение порядка объявления может ничего не дать) и у вас все получится.
Re[4]: Size-contest_68!!!
От: Нэчер  
Дата: 24.06.05 20:32
Оценка:
Здравствуйте, Нэчер, Вы писали:

<оверквотинг вырезан> — Кодт

Стормозил...
Теперь 68 байт(75 на сфере):

n,i,s;main(){for(;scanf("%d",&n+!i--),s+=n*=n>0,i;);printf("%d",s);}
Re[5]: Size-contest
От: Сергей  
Дата: 26.06.05 19:46
Оценка:
Здравствуйте, Alex Alexandrov, Вы писали:

AA>Здравствуйте, Кодт, Вы писали:


К>>А кто будет обнулять s?


AA>Есть воспоминание (не могу найти в стандарте), что глобальные переменные автоматически инициализуруются нулями.

Не знаю, как насчет стандарта, но практически так оно и есть (в контексте x86/BCC/GCC/VC, не распространять на другие платформы/компиляторы ).
Re[6]: Size-contest
От: Аноним  
Дата: 27.06.05 05:37
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, _DAle_, Вы писали:


_DA>>Во-вторых, надо бы добавить, что whitespace использовать нельзя.


К>Надо изменить требования к подсчёту. Сказать, что пробелы и переводы строк УЧИТЫВАЮТСЯ, и пусть народ сам выжимает всё возможное.

К>Ибо в паскале пробелы являются служебными символами: сравни
К>
К>if true then x:=0;
К>iftruethenx:=0;
К>

К>а в Си и переводы строк кое-где (в #инструкциях) существенны.

К>Вот тогда и будет очевидно, что whitespace (будучи очень низкоуровневым языком) проиграет, наряду с brainfuck и т.п.


Так и есть вот в этой задаче: http://spoj.sphere.pl/problems/KAMIL/
Я сделал условие таким же как дано в условии, здесь на rsdn.ru, хотя учитывать все символы мне тоже кажется более логичным.
Re[5]: Size-contest
От: Аноним  
Дата: 27.06.05 05:39
Оценка:
Здравствуйте, _DAle_, Вы писали:

_DA>Здравствуйте, <Аноним>, Вы писали:


А>>Здравствуйте, Трурль, Вы писали:


Т>>>Здравствуйте, Аноним, Вы писали:


А>>>>Добавил все возможные языки — можно тестить. =)

Т>>>whitespace забыли

А>>админ убрал у них статистика может навернуться при 0 ...

А>>Надо было мне Judge по другому писать +1 прибавить ..

_DA>Поправь условие, пожалуйста. Во-первых

_DA>

_DA>t – number of test cases [t < 1000]


_DA>Во-вторых, надо бы добавить, что whitespace использовать нельзя.


Не понял, что исправить.
Whitespace просто нет в списке возможных языов для данной задачи, этого ИМХО достаточно. =)
Re[6]: Size-contest
От: _DAle_ Беларусь  
Дата: 27.06.05 07:59
Оценка:
Здравствуйте, <Аноним>, Вы писали:

_DA>>Поправь условие, пожалуйста. Во-первых

_DA>>

_DA>>t – number of test cases [t < 1000]


_DA>>Во-вторых, надо бы добавить, что whitespace использовать нельзя.


А>Не понял, что исправить.

Ну как что. Нет там никаких "test cases". Там число N вводится, а потом N чисел, а в условии посмотри, что написано.

А>Whitespace просто нет в списке возможных языов для данной задачи, этого ИМХО достаточно. =)


Объяснишь потом это людям, которые напишут на whitespace прогу, а потом обломаются на списке языков
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[7]: Size-contest
От: Аноним  
Дата: 27.06.05 08:16
Оценка:
Здравствуйте, _DAle_, Вы писали:

_DA>Здравствуйте, <Аноним>, Вы писали:


_DA>>>Поправь условие, пожалуйста. Во-первых

_DA>>>

_DA>>>t – number of test cases [t < 1000]


_DA>>>Во-вторых, надо бы добавить, что whitespace использовать нельзя.


А>>Не понял, что исправить.

_DA>Ну как что. Нет там никаких "test cases". Там число N вводится, а потом N чисел, а в условии посмотри, что написано.

Ну вот это первое число и есть t. А затем t чисел.

А>>Whitespace просто нет в списке возможных языов для данной задачи, этого ИМХО достаточно. =)


_DA>Объяснишь потом это людям, которые напишут на whitespace прогу, а потом обломаются на списке языков


Перепишут на BrainFuck'e потом. =)
Re[2]: Size-contest
От: Erop Россия  
Дата: 30.06.05 23:41
Оценка:
Здравствуйте, Кодт, Вы писали:

К>K&R Си

К>
К>#define R (scanf("%d",&t),t>0?t:0)
К>main(){int t,n=R,s=0;for(;n--;s+=R);printf("%d",s);}
К>

К>Что-то не получается меньше 87 символов (включая 3 обязательных пробела и 1 LF).

А

#include <stdio.h>

почему не считается?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: Size-contest
От: Сергей  
Дата: 01.07.05 04:37
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, Кодт, Вы писали:


К>>K&R Си

К>>
К>>#define R (scanf("%d",&t),t>0?t:0)
К>>main(){int t,n=R,s=0;for(;n--;s+=R);printf("%d",s);}
К>>

К>>Что-то не получается меньше 87 символов (включая 3 обязательных пробела и 1 LF).

E>А


E>
E>#include <stdio.h>
E>

E>почему не считается?

Здесь
Автор: Кодт
Дата: 23.06.05
уже про это спрашивали и отвечали.
Re[7]: Size-contest
От: Аноним  
Дата: 05.07.05 13:12
Оценка:
а если машкодом писать, сколько там байтов будет значением больше 32?
Re[2]: Size-contest
От: _DAle_ Беларусь  
Дата: 05.07.05 13:32
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А> Самые прикольные решения:


...

Можно было и копирайты расставить
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re: Size-contest
От: Аноним  
Дата: 05.07.05 13:38
Оценка:
https://spoj.sphere.pl/ranks/SIZECON/

Как всё опошлили...
Re[3]: Size-contest
От: Аноним  
Дата: 05.07.05 13:40
Оценка:
Ах, да: C++ и Pascal made by _Dale_ =)
Re[2]: Size-contest
От: Сергей  
Дата: 05.07.05 13:43
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Pascal:

А> 85 символов:

А>
А>var j,s,n:int64;
А>begin
А>  read(n);
А>  repeat
А>    read(j);
А>    if j>0 then s:=s+j;
А>    dec(n)
А>  until n=0;
А>  write(s)
А>end.
А>


76 символов:
var
 a, s : int64;
begin
 read(a);
 repeat
  read(a);
  s:=s+a*ord(a>0)
 until eof;
 write(s)
end.
Re[3]: Size-contest
От: Аноним  
Дата: 05.07.05 13:45
Оценка:
Здравствуйте, Сергей, Вы писали:

С>Здравствуйте, Аноним, Вы писали:


А>>Pascal:

А>> 85 символов:

А>>
А>>var j,s,n:int64;
А>>begin
А>>  read(n);
А>>  repeat
А>>    read(j);
А>>    if j>0 then s:=s+j;
А>>    dec(n)
А>>  until n=0;
А>>  write(s)
А>>end.
А>>


С>76 символов:

С>
С>var
С> a, s : int64;
С>begin
С> read(a);
С> repeat
С>  read(a);
С>  s:=s+a*ord(a>0)
С> until eof;
С> write(s)
С>end.
С>


Это не будет работать, на тестах которые предложены на сфере.
Re: Size-contest
От: Аноним  
Дата: 28.06.07 14:00
Оценка:
Perl (53)
$a=<>;$b=0;while($a--){$c=<>;$b+=$c if$c>0;}print $b;


альтернатива (48)
$b=<>;$b=0;while($c=<>){$b+=$c if$c>0;}print $b;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.