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

Сократить код. Задача про сравнение символов - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.61
костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
02.01.2014, 21:07     Сократить код. Задача про сравнение символов #1
набросал решение вышесказаной задачи вот код
C++
1
2
3
4
5
6
7
#include <fstream>
main(int k){
    std::fstream i("input.txt"),o("output.txt", 2);
    i>> k;
    k = k * 5 - 5;
    k > 720 ? o<<"NO" : o <<k / 60 << " "<< k % 60;
}
с удивлением обнаружил что я на 6 месте по коду
Размер кода: 119
но есть код (с++) и короче 114 символов как?
помогите мне сократить код (убрать 4-5 символов)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,416
17.01.2014, 16:09     Сократить код. Задача про сравнение символов #61
Цитата Сообщение от костя666674555 Посмотреть сообщение
int void самое главное что бы ******** принял
удачи в устройстве на работу
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
19.01.2014, 21:59  [ТС]     Сократить код. Задача про сравнение символов #62
есть задача [Задание нужно публиковать на форуме. Ссылки не допускаются]
и есть код
C++
1
2
3
4
5
6
#include <fstream>
main(int n){
std::fstream f("input.txt"),q("output.txt",2);
f>>n;
q<<(n>1 ? n%2!=1 ? n/2 : n : 0);
}
размер коды 103 символа
а лутший результат 89 как?
сократить код!
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,178
Завершенные тесты: 1
19.01.2014, 22:20     Сократить код. Задача про сравнение символов #63
Если перевернуть условие, то можно чуть-чуть сократить
C++
1
q<<(n<=1?0:n%2?n:n/2);
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,416
19.01.2014, 22:22     Сократить код. Задача про сравнение символов #64
C++
1
2
3
4
5
6
#include <fstream>
main(int n){
std::fstream f("input.txt"),q("output.txt",2);
f>>n;
q<<(n&1?n-!(n-1):n/2);
}
Добавлено через 1 минуту
C++
1
2
3
4
5
6
#include <fstream>
main(int n){
std::fstream f("input.txt"),q("output.txt",2);
f>>n;
q<<(n&1?n-1?n:0:n/2);
}
костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
20.01.2014, 14:50  [ТС]     Сократить код. Задача про сравнение символов #65
C++
1
2
3
4
5
6
#include <fstream>
main(int n){
std::fstream f("input.txt"),q("output.txt",2);
f>>n;
q<<(n&1?n-1?n:0:n/2);
}
100 символов

Добавлено через 21 секунду
ещё бы символ((
Ev[G]eN
20.01.2014, 15:55
  #66
 Комментарий модератора 
Ознакомьтесь внимательно с Правилами нашего Форума. Особое внимание уделите пункту #5.19 - Запрещено создавать темы в виде ссылок на задания или коды программ, расположенные на других сайтах.
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,178
Завершенные тесты: 1
20.01.2014, 16:42     Сократить код. Задача про сравнение символов #67
Вопрос по существу задачи:
зачем проверяется, что n равно нулю?
Ведь ничему не противоречит предположение, что,
если разделить торт на ноль частей, то и получим ноль кусков.
C++
1
2
3
4
5
6
#include <fstream>
main(int n){
std::fstream f("input.txt"),q("output.txt",2);
f>>n;
q<<(n&1?n:n/2);
}
Зюфпъ
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 7
20.01.2014, 17:53     Сократить код. Задача про сравнение символов #68
В какой IDE можно скомпилировать эту программу?

Добавлено через 11 минут
C++
1
2
3
4
5
6
7
8
#include <fstream>
 
main(int n)
{
    std::fstream f("input.txt"),q("output.txt",2);
    f>>n;
    q<<(n&1?n:n/2);
}
Ошибка на 5-й строке
error: no matching function for call to 'std::basic_fstream<char>::basic_fstream(const char [11], int)'
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
20.01.2014, 17:56     Сократить код. Задача про сравнение символов #69
Зюфпъ, а если вместо 2 вставить std::ios::out?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11828 / 6807 / 769
Регистрация: 27.09.2012
Сообщений: 16,878
Записей в блоге: 2
Завершенные тесты: 1
20.01.2014, 18:00     Сократить код. Задача про сравнение символов #70
Цитата Сообщение от Зюфпъ Посмотреть сообщение
В какой IDE можно скомпилировать эту программу?
в Microsoft Visual C++ 7.1 должно пойти
Зюфпъ
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 7
20.01.2014, 18:02     Сократить код. Задача про сравнение символов #71
С std::ios::out заработала
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,416
20.01.2014, 18:03     Сократить код. Задача про сравнение символов #72
Цитата Сообщение от zss Посмотреть сообщение
зачем проверяется, что n равно нулю?
там вообще-то проверка на n = 1.
Мой брат всегда при дележке торта говорит: лучше всего - резать на одного
Потому как резать то вообще не надо. Кстати, помню что в данном вопросе в 10 тесте как раз и идет проверка на данный момент. На вход идет 1, на выход ожидается 0.
костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
20.01.2014, 18:23  [ТС]     Сократить код. Задача про сравнение символов #73
Цитата Сообщение от zss Посмотреть сообщение
Вопрос по существу задачи:
зачем проверяется, что n равно нулю?
Ведь ничему не противоречит предположение, что,
если разделить торт на ноль частей, то и получим ноль кусков.
C++
1
2
3
4
5
6
#include <fstream>
main(int n){
std::fstream f("input.txt"),q("output.txt",2);
f>>n;
q<<(n&1?n:n/2);
}
эх вронг на 10 тесте
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
20.01.2014, 19:20     Сократить код. Задача про сравнение символов #74
C++
1
n >> !(n & 1) - !~-n
Зюфпъ
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 7
20.01.2014, 19:23     Сократить код. Задача про сравнение символов #75
костя6667455, эта программа не работает. Надо по правилам писать, а не с ошибками

Добавлено через 1 минуту
Я сейчас еще проверил в Визуал Студио. И тоже не работает. Нужно что бы main() возвращала значение
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,416
20.01.2014, 19:29     Сократить код. Задача про сравнение символов #76
Цитата Сообщение от Зюфпъ Посмотреть сообщение
костя6667455, эта программа не работает. Надо по правилам писать, а не с ошибками
Он все сказал тут:
Сократить код. Задача про сравнение символов

Да, то что написано выше проходит тесты на acmp, но за использование конструкций как у Somebody в реальных проектах отрывают руки.
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
20.01.2014, 20:07     Сократить код. Задача про сравнение символов #77
89:
C++
1
2
3
4
5
#include <ios>
main()
{
  system("for /f %n in (input.txt) do set /a %n ^>^> !(%n % 2) - !~-%n >output.txt");
}
Добавлено через 36 минут
80 символов сделал. Стандартный acmp'шный хак: вся смысловая нагрузка в строке, состоящей из пробелов и переводов строки (CR внутри кавычек VS нормально переваривает); эта строка декодируется и отправляется в system(). Тут вся суть в том, чтобы придумать такой метод кодирования, чтобы получить декодер как можно проще - думайте, если кому интересно.
костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
21.01.2014, 08:26  [ТС]     Сократить код. Задача про сравнение символов #78
Somebody, блин хоть убейте а код не пойму
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,416
21.01.2014, 14:59     Сократить код. Задача про сравнение символов #79
костя666674555, курите bat файлы
http://www.cyberforum.ru/cmd-bat/thread940944.html
Полезные BAT/CMD скрипты
FAQ по файлам BAT/CMD
Каталог простых примеров решенных задач BAT/CMD, с чего начать (■■■ основная тема ■■■)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2014, 21:11     Сократить код. Задача про сравнение символов
Еще ссылки по теме:

C++ Сократить количество символов кода

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

Или воспользуйтесь поиском по форуму:
костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
28.01.2014, 21:11  [ТС]     Сократить код. Задача про сравнение символов #80
условие
Кликните здесь для просмотра всего текста
Шахматы
(Время: 1 сек. Память: 16 Мб Сложность: 18%)

Шахматы Совсем недавно Вася занялся программированием и решил реализовать собственную программу для игры в шахматы. Но у него возникла проблема определения правильности хода конем, который делает пользователь. Т.е. если пользователь вводит значение «C7-D5», то программа должна определить это как правильный ход, если же введено «E2-E4», то ход неверный. Так же нужно проверить корректность записи ввода: если например, введено «D9-N5», то программа должна определить данную запись как ошибочную. Помогите ему осуществить эту проверку!

Входные данные

В единственной строке входного файла INPUT.TXT записан текст хода, который указал пользователь. Пользователь не может ввести строку, длиннее 5 символов.
Выходные данные

В выходной файл OUTPUT.TXT нужно вывести «YES», если указанный ход конем верный, если же запись корректна (в смысле правильности записи координат), но ход невозможен, то нужно вывести «NO». Если же координаты не определены или заданы некорректно, то вывести сообщение «ERROR».
Примеры
№ INPUT.TXT OUTPUT.TXT
1 C7-D5 YES
2 E2-E4 NO
3 BSN ERROR

код:
C++
1
2
3
4
5
6
7
8
#include <fstream>
#include <string>
main() {
  std::fstream q("input.txt"),o("output.txt", 2);
  std::string a;
  q>>a;
  o<<(a.length() < 5 || a[2] != '-' || a[0] < 'A' || a[0] > 'H' || a[3] < 'A' || a[3] > 'H' || a[1] < '1' || a[1] > '8' || a[4] < '1' || a[4] > '8' ? "ERROR" : abs((a[0] - a[3]) * (a[1] - a[4])) != 2 ? "NO" : "YES");
}
Размер кода: 264 (как короче?)
Yandex
Объявления
28.01.2014, 21:11     Сократить код. Задача про сравнение символов
Ответ Создать тему
Опции темы

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