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

Можно ли еще сократить код? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.62
Nikko12
 Аватар для Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
07.07.2013, 21:30     Можно ли еще сократить код? #1
Есть программа, которая должна считать данные из файла input.txt и записать ответ в фаил output.txt. Программа должна сложить 2 числа не превосходящих 10^9. Можно ли еще уменьшить код??
C++
1
2
3
4
5
6
7
8
9
#include <fstream>
long a,b; 
main()
{
    std::ifstream cin("input.txt");
    std::ofstream cout("output.txt");
    cin>>a>>b;
    cout<<a+b;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2013, 21:30     Можно ли еще сократить код?
Посмотрите здесь:

C++ сократить код, добавить функцию
C++ сократить код
Сократить код на два символа C++
сократить код C++
C++ сократить код
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
07.07.2013, 22:31     Можно ли еще сократить код? #21
Цитата Сообщение от Nikko12 Посмотреть сообщение
Программа должна сложить 2 числа не превосходящих 10^9.
А это просто так написано было?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.07.2013, 22:34     Можно ли еще сократить код? #22
111 байт.
C++
1
2
#include<fstream>
long a,b;int main(){std::ifstream r("i");std::ofstream w("o");r>>a>>b;w<<a+b;}
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
07.07.2013, 22:39     Можно ли еще сократить код? #23
alsav22, где input.txt и output.txt из задания?
Nikko12
 Аватар для Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
07.07.2013, 22:52  [ТС]     Можно ли еще сократить код? #24
Tulosba, Простите, был не прав, можно Long на int заменить.

Добавлено через 4 минуты
alsav22, Спасибо

Добавлено через 50 секунд
Цитата Сообщение от Tulosba Посмотреть сообщение
alsav22, где input.txt и output.txt из задания?
i и o и есть input.txt и output.txt Сокращенный вид
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.07.2013, 23:02     Можно ли еще сократить код? #25
У меня какое-то время на этой задаче 54 символа было. Потом злой админ удалил мою посылку :(
Конкретно на этой задаче на плюсах в топ попыток попасть никак не получится (вернее, получится, но опять удалят посылку).
Проще всего найти какую-нибудь сложную задачу, посидеть над ее сокращением пару часов, и вы почти гарантированно попадете в топ. А на простенькие задачи смотреть не стоит - все топовые позиции уже расхвачены различными читерами.
Цитата Сообщение от Nikko12 Посмотреть сообщение
Можно ли еще уменьшить код??
Да, можно. Символов на 15-20.
Nikko12
 Аватар для Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
07.07.2013, 23:06  [ТС]     Можно ли еще сократить код? #26
diagon, Если не секрет, за что удалят решение?? Ведь все решено верно
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 681
08.07.2013, 03:58     Можно ли еще сократить код? #27
stream f;
f.open("Имя файла");
Только расширение файла придется тебе добавлять с помощью strcpy.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.07.2013, 04:03     Можно ли еще сократить код? #28
Bend3r, более короткий код в студию!
Nikko12
 Аватар для Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
08.07.2013, 07:24  [ТС]     Можно ли еще сократить код? #29
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
2
#include<fstream>
long a,b;int main(){std::ifstream r("i");std::ofstream w("o");r>>a>>b;w<<a+b;}
Можно еще сократить:
C++
1
2
#include<fstream>
long a,b;int main(){std::fstream r("inpit.txt");std::ofstream w("output.txt");r>>a>>b;w<<a+b;}
110 байт
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.07.2013, 07:58     Можно ли еще сократить код? #30
В 22 посте я неправильно написал, там 97 байтов.
Цитата Сообщение от Nikko12 Посмотреть сообщение
Можно еще сократить:
Здесь - 113.
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
08.07.2013, 14:14     Можно ли еще сократить код? #31
C++
1
2
3
4
5
#include <ios>
main()
{
  system("for /f \"tokens=1,2\" %a in (input.txt) do set /a %a+%b >output.txt");
}
Думаю, дальше надо в строке делать пробельные символы и декодировать её в цикле.
Вообще самая ненормальная идея, которая у меня была насчёт [читерства на] acmp, - это написать ассемблерную вставку, которая состоит в основном из пробельных символов и генерирует основной код, который решает задачу. Это было давно, так что подробности не помню, но вроде у меня какой-то вариант создания любого кода любого размера из небольшого количества непробельных символов получился в теории, но трудоёмкость создания всего этого оказалась слишком большой, чтобы реально попробовать (что-то типа десятка adc на каждые 4 байта генерируемого в регистре кода). К тому же, чтобы избавиться от include, надо ещё или заранее узнать адреса системных функций в системе, где будет тестироваться (например, можно вытащить набором решений, которые будут побитово выдавать адреса правильностью ответа), или ещё динамически искать базу kernel32, копаться в таблице экспорта и грузить потом остальные dll'ки.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
08.07.2013, 14:32     Можно ли еще сократить код? #32
Цитата Сообщение от Somebody Посмотреть сообщение
которая состоит в основном из пробельных символов
На ацмп их убрали уже. Теперь там не учитываются только пробелы и переносы строк.
Я когда-то пробовал реализовать подобную идею, только в system подавал код на vbs'ке. На 3 тесте стабильно TLE + падение тестирующей системы. После ~5 попытки мне в личку написал разгневанный админ, которому надоело постоянно чинить систему :) Просто system создает отдельный процесс, по мере прохождения тестов эти процессы накапливаются и намертво вешают систему, насколько я понял.
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
08.07.2013, 18:57     Можно ли еще сократить код? #33
Цитата Сообщение от diagon Посмотреть сообщение
Просто system создает отдельный процесс, по мере прохождения тестов эти процессы накапливаются и намертво вешают систему, насколько я понял.
Вообще этот процесс должен завершаться по-хорошему. Во всяком случае, думаю, помнишь вот это - я тогда с system раз по 10 подряд отправлял, но админ мне не писал
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
08.07.2013, 19:15     Можно ли еще сократить код? #34
Цитата Сообщение от Somebody Посмотреть сообщение
Вообще этот процесс должен завершаться по-хорошему. Во всяком случае, думаю, помнишь вот это - я тогда с system раз по 10 подряд отправлял, но админ мне не писал
Видимо, echo завершается быстро, а вот vbs'ки тормозят.
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
28.07.2013, 17:23     Можно ли еще сократить код? #35
Меня одного смущает то что там у фу-и main нету типа (int)
Цитата Сообщение от Nikko12 Посмотреть сообщение
main()
И что там есть cout, но нету std::
или
C++
1
using namespace std;
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2013, 17:29     Можно ли еще сократить код? #36
Цитата Сообщение от Даниил1991 Посмотреть сообщение
Меня одного смущает то что там у фу-и main нету типа (int)
И что там есть cout, но нету std::
или
C++
1
using namespace std;
cin, cout - это его файловые потоки, а не стандартные, о чём я ТС и пишу, но он все-равно продолжает свои потоки называть именами стандартных.
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
28.07.2013, 17:34     Можно ли еще сократить код? #37
А-а-а, извините, я не знал этого

Добавлено через 22 секунды
Но про main я точно прав, потому что у меня ошибку выбивало
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
28.07.2013, 17:52     Можно ли еще сократить код? #38
Цитата Сообщение от Даниил1991 Посмотреть сообщение
Но про main я точно прав, потому что у меня ошибку выбивало
Тут подгоняется под ********, там вроде VC++ 7.1, в нём работает. А так вообще да.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2013, 08:28     Можно ли еще сократить код?
Еще ссылки по теме:

C++ Сократить код до 89 символов
Скажите, пожалуйста, возможно ли код сократить еще? C++
Поделитесь советом. Как сократить еще 1 символ. =) C++

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

Или воспользуйтесь поиском по форуму:
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
29.07.2013, 08:28     Можно ли еще сократить код? #39
Цитата Сообщение от Nikko12 Посмотреть сообщение
Можно ли еще уменьшить код??
Еще можно использовать класс fstream вместо ifstream и ofstream. Если схитрить с учетом особенностей тамошнего компилятора, код немного сократится.
Yandex
Объявления
29.07.2013, 08:28     Можно ли еще сократить код?
Ответ Создать тему
Опции темы

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