Цифры в столбик
От: Goodkov Россия  
Дата: 21.07.03 10:57
Оценка: 15 (2) +2
Приношу заранее извенения если такая задачу уже обсуждалась. Не помню где я ее взял, так что тоже приношу извенения, если нарушу чьи-то авторские права.

Задача состоит в следующем. Необходимо написать программу на С, которая выводит в столбец цифры от 0 до 100. Цель — получить как можно меньший размер исходника в символах(считая пробелы и т.д.). Запрещено пользоваться, операторами цикла (for, while ). Сам написал где-то в районе 50 символов, слышал про 41 (под gcc).
Re: Цифры в столбик
От: King Oleg Украина http://kingoleg.livejournal.com
Дата: 21.07.03 11:13
Оценка:
Здравствуйте, Goodkov, Вы писали:

G>Запрещено пользоваться, операторами цикла (for, while ).

А рекурсия — это цикл?
King Oleg
*Читайте DOC'и, они rules*
Re[2]: Цифры в столбик
От: Apostate  
Дата: 21.07.03 11:17
Оценка:
Здравствуйте, King Oleg, Вы писали:

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


G>>Запрещено пользоваться, операторами цикла (for, while ).

KO>А рекурсия — это цикл?

а goto?
Re: Цифры в столбик
От: LCR Россия lj://_lcr_
Дата: 21.07.03 11:35
Оценка:
Здравствуйте, Goodkov, Вы писали:

...

А перевод строки считать одним символом или двумя? (я про 0D0A).
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[3]: Цифры в столбик
От: Goodkov Россия  
Дата: 21.07.03 11:41
Оценка:
Здравствуйте, Apostate, Вы писали:

A>Здравствуйте, King Oleg, Вы писали:


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


G>>>Запрещено пользоваться, операторами цикла (for, while ).

KO>>А рекурсия — это цикл?

A>а goto?


Забыл уточнить — нельзя также пользоваться оператором сравнения(if), а goto можно,
соответственно рекурсией тоже.
Re[2]: Цифры в столбик
От: Goodkov Россия  
Дата: 21.07.03 11:45
Оценка:
Здравствуйте, LCR, Вы писали:

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


LCR>...


LCR>А перевод строки считать одним символом или двумя? (я про 0D0A).


2
Re: Цифры в столбик
От: Дмитро  
Дата: 21.07.03 11:57
Оценка: 9 (1)
Здравствуйте, Goodkov, Вы писали:

G>Приношу заранее извенения если такая задачу уже обсуждалась. Не помню где я ее взял, так что тоже приношу извенения, если нарушу чьи-то авторские права.


G>Задача состоит в следующем. Необходимо написать программу на С, которая выводит в столбец цифры от 0 до 100. Цель — получить как можно меньший размер исходника в символах(считая пробелы и т.д.). Запрещено пользоваться, операторами цикла (for, while ). Сам написал где-то в районе 50 символов, слышал про 41 (под gcc).


main(i){printf("%d\n",i-1);i<101?main(i+1):0;}


46 символов
--
Дмитрий
Re[2]: Цифры в столбик
От: Goodkov Россия  
Дата: 21.07.03 12:02
Оценка:
Здравствуйте, Дмитро, Вы писали:

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


G>>Приношу заранее извенения если такая задачу уже обсуждалась. Не помню где я ее взял, так что тоже приношу извенения, если нарушу чьи-то авторские права.


G>>Задача состоит в следующем. Необходимо написать программу на С, которая выводит в столбец цифры от 0 до 100. Цель — получить как можно меньший размер исходника в символах(считая пробелы и т.д.). Запрещено пользоваться, операторами цикла (for, while ). Сам написал где-то в районе 50 символов, слышал про 41 (под gcc).


Д>
Д>main(i){printf("%d\n",i-1);i<101?main(i+1):0;}
Д>


Д>46 символов


Еще одно уточнение: НИКАКИМИ ОПЕРАТОРАМИ СРАВНЕНИЯ ПОЛЬЗОВАТЬСЯ НЕЛЬЗЯ
Re[3]: Цифры в столбик
От: King Oleg Украина http://kingoleg.livejournal.com
Дата: 21.07.03 12:14
Оценка:
Здравствуйте, Goodkov, Вы писали:

G>НИКАКИМИ ОПЕРАТОРАМИ СРАВНЕНИЯ ПОЛЬЗОВАТЬСЯ НЕЛЬЗЯ

осталось организовать выход из рекурсии или, если в уславии не уточняется, что надо напечатать только цисла от 1 до 100, просто забить на выход
King Oleg
*Читайте DOC'и, они rules*
Re: Цифры в столбик
От: Gasy Россия  
Дата: 21.07.03 12:18
Оценка: :))
main(i){printf("%i\n",i-1);main(i*i/(i%101)+1);}
Re[2]: Цифры в столбик
От: Goodkov Россия  
Дата: 21.07.03 12:45
Оценка:
Здравствуйте, Gasy, Вы писали:

G>main(i){printf("%i\n",i-1);main(i*i/(i%101)+1);}

сорри за ламерство и как это откомпилировать???
Re[3]: Цифры в столбик
От: Gasy Россия  
Дата: 21.07.03 12:53
Оценка:
G>сорри за ламерство и как это откомпилировать???
Мож в какой букве ошибся, но у меня gcc file_name.c
Re[3]: Цифры в столбик
От: Дмитро  
Дата: 21.07.03 14:13
Оценка:
Здравствуйте, Goodkov, Вы писали:

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


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


G>>>Приношу заранее извенения если такая задачу уже обсуждалась. Не помню где я ее взял, так что тоже приношу извенения, если нарушу чьи-то авторские права.


G>>>Задача состоит в следующем. Необходимо написать программу на С, которая выводит в столбец цифры от 0 до 100. Цель — получить как можно меньший размер исходника в символах(считая пробелы и т.д.). Запрещено пользоваться, операторами цикла (for, while ). Сам написал где-то в районе 50 символов, слышал про 41 (под gcc).


Д>>
Д>>main(i){printf("%d\n",i-1);i<101?main(i+1):0;}
Д>>


Д>>46 символов


G>Еще одно уточнение: НИКАКИМИ ОПЕРАТОРАМИ СРАВНЕНИЯ ПОЛЬЗОВАТЬСЯ НЕЛЬЗЯ

Это которые больше меньше? А арифметическими?
main(i){printf("%d\n",i-1);i-101?main(i+1):0;}


Поскольку мне кажется, что терпения у меня не хватит ставить такие рекорды, то в соответствии с процедурой nikholas'а
Автор: nikholas
Дата: 11.07.03
ставлю тебе в задачу согласен.
--
Дмитрий
Re[2]: Цифры в столбик
От: Зеленый Россия  
Дата: 21.07.03 15:32
Оценка:
Здравствуйте, Gasy, Вы писали:

G>main(i){printf("%i\n",i-1);main(i*i/(i%101)+1);}


Ай-ай-ай условие выхода = division by zero
Re[3]: Цифры в столбик
От: LaptevVV Россия  
Дата: 21.07.03 15:52
Оценка:
Здравствуйте, Goodkov, Вы писали:

G>>main(i){printf("%i\n",i-1);main(i*i/(i%101)+1);}

G>сорри за ламерство и как это откомпилировать???
У меня Turbo C++ 3 потребовал поставить инклуд стдио
И тело функции — на другую строку опустить. А так все сработало
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Цифры в столбик
От: Gasy Россия  
Дата: 22.07.03 06:31
Оценка:
З> Ай-ай-ай условие выхода = division by zero
А в условии требуется корректный выход?
Re[2]: Цифры в столбик
От: Demon Россия  
Дата: 22.07.03 06:34
Оценка: 5 (1)
Здравствуйте, Дмитро, Вы писали:

Д>
Д>main(i){printf("%d\n",i-1);i<101?main(i+1):0;}
Д>


Д>46 символов


main(i){printf("%d\n",i-1);i<101&&main(i+1);}

45
Re[4]: Цифры в столбик
От: Goodkov Россия  
Дата: 22.07.03 07:05
Оценка:
Здравствуйте, Gasy, Вы писали:

G>А в условии требуется корректный выход?

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

Есть решение с выходом по делению на ноль за 39 символов, но я его не знаю.
Есть мысль заменить в предидущих решениях функцию main например функцией m(i)
и если позволяет компилятор указать точку входа эту функцию, такое прокатит?
Просто проверить не могу, т.к. в данную минуту нет ни одного нормального
компилятора кроме BC++3.1, а там надо делать include <stdio.h>, а это уже не красиво.
Re[3]: Цифры в столбик
От: ЖуК Украина http://smart-ip.net/
Дата: 30.07.03 07:23
Оценка:
Здравствуйте, Demon, Вы писали:

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


Д>>
Д>>main(i){printf("%d\n",i-1);i<101?main(i+1):0;}
Д>>


Д>>46 символов


D>
D>main(i){printf("%d\n",i-1);i<101&&main(i+1);}
D>

D>45


main(i){cout<<i-1<<"\n";i<101&&main(i+1);}

42
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[4]: Цифры в столбик
От: m.a.g. Мальта http://dottedmag.net/
Дата: 30.07.03 13:00
Оценка:
Здравствуйте, ЖуК, Вы писали:

ЖуК>
ЖуК>main(i){cout<<i-1<<"\n";i<101&&main(i+1);}
ЖуК>

ЖуК>42

Не пойдет. В C++, в отличие от C, обязательно объявление функций перед использованием.
... << RSDN@Home 1.1 beta 1 >>
Re[5]: Цифры в столбик
От: King Oleg Украина http://kingoleg.livejournal.com
Дата: 30.07.03 13:17
Оценка: +1
Здравствуйте, m.a.g., Вы писали:

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


ЖуК>>
ЖуК>>main(i){cout<<i-1<<"\n";i<101&&main(i+1);}
ЖуК>>

ЖуК>>42

MAG>Не пойдет. В C++, в отличие от C, обязательно объявление функций перед использованием.

???
А какую функцию он не объявил перед использованием?
King Oleg
*Читайте DOC'и, они rules*
Re[4]: Цифры в столбик
От: Plague Россия  
Дата: 31.07.03 05:43
Оценка:
Здравствуйте, ЖуК, Вы писали:

ЖуК>
ЖуК>main(i){cout<<i-1<<"\n";i<101&&main(i+1);}
ЖуК>

ЖуК>42

неа, инклады подключать надо и неймспейс
... << RSDN@Home 1.1 beta 1 >>
Re: Цифры в столбик
От: Plague Россия  
Дата: 31.07.03 05:43
Оценка:
Здравствуйте, Goodkov, Вы писали:

G>Задача состоит в следующем. Необходимо написать программу на С, которая выводит в столбец цифры от 0 до 100. Цель — получить как можно меньший размер исходника в символах(считая пробелы и т.д.). Запрещено пользоваться, операторами цикла (for, while ). Сам написал где-то в районе 50 символов, слышал про 41 (под gcc).


43 символа

main(i){printf("%d\n",i);i-100&&main(i+1);}
... << RSDN@Home 1.1 beta 1 >>
Re[6]: Цифры в столбик
От: m.a.g. Мальта http://dottedmag.net/
Дата: 31.07.03 06:41
Оценка:
Здравствуйте, King Oleg, Вы писали:

ЖуК>>>
ЖуК>>>main(i){cout<<i-1<<"\n";i<101&&main(i+1);}
ЖуК>>>

ЖуК>>>42

MAG>>Не пойдет. В C++, в отличие от C, обязательно объявление функций перед использованием.

KO>???
KO>А какую функцию он не объявил перед использованием?

std::ostream& operator<<(std::ostream&, int);
std::ostream& operator<<(std::ostream&, const char*);

А также класс std::ostream и глобальный объект std::cout. Мало того, объект cout не введен в текущее пространство имен из std.

Кроме того, в объявлении функции main(i) в C++ обязательно указание типа i и типа возвращаемого значения, и, к тому же, это недопустимый набор аргументов.
... << RSDN@Home 1.1 beta 1 >>
Re[5]: Цифры в столбик
От: King Oleg Украина http://kingoleg.livejournal.com
Дата: 31.07.03 06:53
Оценка:
Здравствуйте, Plague, Вы писали:

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


ЖуК>>
ЖуК>>main(i){cout<<i-1<<"\n";i<101&&main(i+1);}
ЖуК>>

ЖуК>>42

P>неа, инклады подключать надо и неймспейс

Для printf() тоже самое.
King Oleg
*Читайте DOC'и, они rules*
Re[6]: Цифры в столбик
От: m.a.g. Мальта http://dottedmag.net/
Дата: 31.07.03 07:09
Оценка:
Здравствуйте, King Oleg, Вы писали:

ЖуК>>>
ЖуК>>>main(i){cout<<i-1<<"\n";i<101&&main(i+1);}
ЖуК>>>

ЖуК>>>42

P>>неа, инклады подключать надо и неймспейс

KO>Для printf() тоже самое.

Ничего подобного. В классическом C функцию разрешается использовать без объявления.
... << RSDN@Home 1.1 beta 1 >>
Re[6]: Цифры в столбик
От: Plague Россия  
Дата: 31.07.03 08:26
Оценка:
Здравствуйте, King Oleg, Вы писали:

P>>неа, инклады подключать надо и неймспейс

KO>Для printf() тоже самое.

втом то и дело что это не так!
делов том что объявление происходит при первом использовании, но оно может не соответствовать типу функции... но как раз использование в С в наших случаях соответствует прототипам, и в соглашениях о вызовах стек при вызове функции высвобождает вызывающий... так что все хорошо!
... << RSDN@Home 1.1 beta 1 >>
Re[2]: Цифры в столбик
От: Plague Россия  
Дата: 31.07.03 08:38
Оценка:
Здравствуйте, Plague, Вы писали:

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


G>>Задача состоит в следующем. Необходимо написать программу на С, которая выводит в столбец цифры от 0 до 100. Цель — получить как можно меньший размер исходника в символах(считая пробелы и т.д.). Запрещено пользоваться, операторами цикла (for, while ). Сам написал где-то в районе 50 символов, слышал про 41 (под gcc).


43 символа, но новая версия старая начиналась с 1, а не с нуля...
а у всех остальных начинается с единицы

i;main(){printf("%d\n",i);i++-100&&main();}
... << RSDN@Home 1.1 beta 1 >>
Re: Цифры в столбик: 39 символов!
От: Apapa Россия  
Дата: 31.07.03 12:56
Оценка: 30 (4)
Здравствуйте, Goodkov, Вы писали:

G>Задача состоит в следующем. Необходимо написать программу на С, которая выводит в столбец цифры от 0 до 100. Цель — получить как можно меньший размер исходника в символах(считая пробелы и т.д.). Запрещено пользоваться, операторами цикла (for, while ). Сам написал где-то в районе 50 символов, слышал про 41 (под gcc).


39 символов:
i;main(){printf("%d\n",++i)-4&&main();}

main(i){printf("%d\n",i++)-4&&main(i);}

Можно конечно во втором варианте i++ убрать в main и заменить на i+1 или на ++i.


P.S. Придумал еще нечестный вариант 39 символов (при запуске нужно указать 100 любых аргументов, если получится ):
main(i){--i&&main(i)&printf("%d\n",i);}

основанный на принципе не (действие,рекурсия), а (рекурсия,действие).


Здесь могла бы быть Ваша реклама!
Re[2]: Цифры в столбик: 39 символов!
От: AlexVinS Россия  
Дата: 31.07.03 13:24
Оценка:
Здравствуйте, Apapa, Вы писали:
маленькое исправление
...
A>39 символов:
A>
i;main(){printf("%d\n",i++)-4&&main();}

...
чтобы с нуля начиналось.


Умный человек знает не многое, но нужное
Re[3]: Цифры в столбик: 39 символов!
От: Apapa Россия  
Дата: 31.07.03 13:55
Оценка:
Здравствуйте, AlexVinS, Вы писали:

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

AVS>маленькое исправление
AVS>...
A>>39 символов:
A>>
i;main(){printf("%d\n",i++)-4&&main();}

AVS>...
AVS>чтобы с нуля начиналось.

Вот елки! Я наоборот старался, чтобы было от 1 до 100. Невнимательность, невнимательность...
Хотя это не существенно. Я думаю мою идею про "printf(...)-4&&..." это не портит.


Здесь могла бы быть Ваша реклама!
Re[4]: Цифры в столбик: 39 символов!
От: AlexVinS Россия  
Дата: 31.07.03 14:12
Оценка:
Здравствуйте, Apapa, Вы писали:

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


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

AVS>>маленькое исправление
AVS>>...
A>>>39 символов:
A>>>
i;main(){printf("%d\n",i++)-4&&main();}

AVS>>...
AVS>>чтобы с нуля начиналось.

A>Вот елки! Я наоборот старался, чтобы было от 1 до 100. Невнимательность, невнимательность...

A>Хотя это не существенно. Я думаю мою идею про "printf(...)-4&&..." это не портит.

Согласен идея . Для полного решения осталось доказать что короче нельзя


Умный человек знает не многое, но нужное
Re[2]: Цифры в столбик: 39 символов!
От: Goodkov Россия  
Дата: 31.07.03 14:47
Оценка:
A>
i;main(){printf("%d\n",++i)-4&&main();}

A>
main(i){printf("%d\n",i++)-4&&main(i);}

A>P.S. Придумал еще нечестный вариант 39 символов (при запуске нужно указать 100 любых аргументов, если получится ):
A>
main(i){--i&&main(i)&printf("%d\n",i);}

A>основанный на принципе не (действие,рекурсия), а (рекурсия,действие).

Дайте мне копилятор который все это дело откомпилирует!!!
А то мой не хочет!!!
Re[3]: Цифры в столбик: 39 символов!
От: Apapa Россия  
Дата: 31.07.03 15:05
Оценка:
Здравствуйте, Goodkov, Вы писали:

A>>
i;main(){printf("%d\n",++i)-4&&main();}

A>>
main(i){printf("%d\n",i++)-4&&main(i);}


G>Дайте мне копилятор который все это дело откомпилирует!!!

G>А то мой не хочет!!!

Компилировать нужно .c на C-шном, а не на C++-шном. В данном случае это обязательно. Я брал wcc из Watcom. Можно wcc386 оттуда же.
Какие ошибки выдает?


Здесь могла бы быть Ваша реклама!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.