Форум программистов, компьютерный форум CyberForum.ru

Сократить код на два символа - C++

Восстановить пароль Регистрация
 
 
костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
06.01.2014, 20:53     Сократить код на два символа #1
сокртить код
C++
1
2
3
4
5
6
7
#include <fstream>
main(int n)
{
std::fstream I("input.txt"), O("output.txt", 2);
I>>n;
O<<(n <=0 ? (n - n*n)  / 2 + 1 : (n*n+n)/2);
}
Размер кода: 111
а лутший 99 символов (разумеется с++) как?
[Задачу размещайте здесь] Задача

Добавлено через 4 минуты
итак начнём
строка
C++
1
O<<(n <=0 ? (n - n*n)  / 2 + 1 : (n*n+n)/2);
сократим на 1 символ
C++
1
O<<(n >0 ? (n*n+n)/2 : (n - n*n)/ 2 + 1);
итак код
C++
1
2
3
4
5
6
7
#include <fstream>
main(int n)
{
std::fstream I("input.txt"), O("output.txt", 2);
I>>n;
O<<(n >0 ? (n*n+n)/2 : (n - n*n)/ 2 + 1);
}
Размер кода: 110
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2014, 20:53     Сократить код на два символа
Посмотрите здесь:

Крестики нолики(сократить код) C++
Можно ли еще сократить код? C++
C++ сократить код, добавить функцию
C++ сократить код
сократить код C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xoror
 Аватар для xoror
29 / 31 / 2
Регистрация: 15.12.2013
Сообщений: 147
06.01.2014, 20:54     Сократить код на два символа #2
Требуется посчитать сумму целых чисел от 1 до N.
Это же арифметическая прогрессия. Сумма рассчитывается в одно действие
костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
06.01.2014, 20:56  [ТС]     Сократить код на два символа #3
Цитата Сообщение от xoror Посмотреть сообщение
Это же арифметическая прогрессия. Сумма рассчитывается в одно действие
n любое даже отрицательное
xoror
 Аватар для xoror
29 / 31 / 2
Регистрация: 15.12.2013
Сообщений: 147
06.01.2014, 21:00     Сократить код на два символа #4
Цитата Сообщение от костя666674555 Посмотреть сообщение
n любое даже отрицательное
Тогда не знаю)
костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
06.01.2014, 21:17  [ТС]     Сократить код на два символа #5
(n+1)(n-2)/-2
(n*n+n)/2=(n*(n+1))/2
если n=n-1
то (n+1)(n-2)/-2=n*(n-1)/-2
и n*(n+1)/2= n*(n-1)/2

Добавлено через 3 минуты
итог
C++
1
2
3
4
5
6
7
8
#include <fstream>
main(int n)
{
std::fstream I("input.txt"), O("output.txt", 2);
I>>n;
int k=n*(n-1)/2;
O<<(n-- >0 ? k : -k);
}
Wrong answer (((((((((((((((((
Ev_Hyper
07.01.2014, 01:33
  #6

Не по теме:


файлы покороче назови

volvo
Супер-модератор
 Аватар для volvo
21811 / 14174 / 3946
Регистрация: 22.10.2011
Сообщений: 25,042
Записей в блоге: 2
07.01.2014, 20:01     Сократить код на два символа #7
костя666674555,
C++
1
O<<(n+(n>0?n*n:2-n*n))/2;
будет 104 символа...

Добавлено через 16 часов 49 минут
А вот так:
C++
1
O<<(n>0?n:2-n)*++n/2;
вообще будет 100 символов. Как убрать еще один - не понятно...
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
07.01.2014, 22:15     Сократить код на два символа #8
Учитывая, что компилятор понимает такое безобразие как
Цитата Сообщение от костя666674555 Посмотреть сообщение
main(int n)
возможно он понимает и *.h заголовки. Тогда можно попробовать заменить #include <fstream> на #include <fstream.h> и убрать перед std::fstream std::.
xoror
 Аватар для xoror
29 / 31 / 2
Регистрация: 15.12.2013
Сообщений: 147
07.01.2014, 22:53     Сократить код на два символа #9
Цитата Сообщение от UI Посмотреть сообщение
Как убрать еще один - не понятно...
Можно двойку убрать здесь
Цитата Сообщение от костя666674555 Посмотреть сообщение
O("output.txt", 2);
Ну и получается как раз 99 символов

C++
1
2
3
4
5
6
7
8
#include <fstream>
 
main(int n)
{
    std::fstream I("input.txt"), O("output.txt");
    I >> n;
    O<<(n>0?n:2-n)*++n/2;
}
volvo
Супер-модератор
 Аватар для volvo
21811 / 14174 / 3946
Регистрация: 22.10.2011
Сообщений: 25,042
Записей в блоге: 2
08.01.2014, 00:08     Сократить код на два символа #10
Цитата Сообщение от xoror Посмотреть сообщение
Можно двойку убрать здесь
Нельзя, это не будет выдавать правильный ответ, и система не зачтет данное решение...
костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
08.01.2014, 16:20  [ТС]     Сократить код на два символа #11
Цитата Сообщение от xoror Посмотреть сообщение
Можно двойку убрать здесь


Ну и получается как раз 99 символов

C++
1
2
3
4
5
6
7
8
#include <fstream>
 
main(int n)
{
    std::fstream I("input.txt"), O("output.txt");
    I >> n;
    O<<(n>0?n:2-n)*++n/2;
}
не 99 а 98 :-)

Добавлено через 7 минут
кто ещё может потдерживать
C++
1
fstream I("input.txt"), O("output.txt", 2);
кроме
C++
1
#include <fstream>
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
08.01.2014, 16:52     Сократить код на два символа #12
Цитата Сообщение от костя666674555 Посмотреть сообщение
int k=n*(n-1)/2;
Цитата Сообщение от костя666674555 Посмотреть сообщение
Wrong answer (((((((((((((((((
+1.
костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
08.01.2014, 16:57  [ТС]     Сократить код на два символа #13
C++
1
int k=n*(n-1)/2;
это формула для n<0
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
08.01.2014, 17:42     Сократить код на два символа #14
C++
1
2
#include<fstream>
main(int n){std::fstream I("i"),O("o",16);I>>n;int d=n>0?1:-1;O<<n+(n-1)*d*n/2;}
Ровно 99 символов.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
08.01.2014, 17:51     Сократить код на два символа #15
kazak, пробелы в подсчете не учитываются
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
08.01.2014, 17:54     Сократить код на два символа #16
Еще проще, печатных символов здесь 94.
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,170
Завершенные тесты: 1
08.01.2014, 18:00     Сократить код на два символа #17
C++
1
main(){int n,d;std::fstream I("i"),O("o",16);I>>n;d=n>0?1:-1;O<<n+(n-1)*d*n/2;}
volvo
Супер-модератор
 Аватар для volvo
21811 / 14174 / 3946
Регистрация: 22.10.2011
Сообщений: 25,042
Записей в блоге: 2
08.01.2014, 18:35     Сократить код на два символа #18
zss, это не пройдет компиляцию. kazak, твой вариант - тоже.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
08.01.2014, 19:18     Сократить код на два символа #19
UI, обобщать то не надо)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2014, 19:24     Сократить код на два символа
Еще ссылки по теме:

C++ сократить код
C++ Сократить код до 101 - 120 символов
C++ Сократить код до 89 символов

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
volvo
Супер-модератор
 Аватар для volvo
21811 / 14174 / 3946
Регистрация: 22.10.2011
Сообщений: 25,042
Записей в блоге: 2
08.01.2014, 19:24     Сократить код на два символа #20
Если б я не проверил онлайн-тестером, я бы не сказал. Повторяю: твой код система не принимает. Выдает "Presentation error". Так тебя больше устраивает?
Yandex
Объявления
08.01.2014, 19:24     Сократить код на два символа
Ответ Создать тему
Опции темы

Текущее время: 12:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru