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

Поделитесь советом. Как сократить еще 1 символ. =) - C++

Восстановить пароль Регистрация
 
Pavlov_Mikhail
0 / 0 / 0
Регистрация: 31.12.2013
Сообщений: 20
10.02.2014, 15:37     Поделитесь советом. Как сократить еще 1 символ. =) #1
C++
1
2
3
4
c>>a;
    a--;
    while(g+=a&1, a/=2);
    o<<g%3;
Подскажите, пожалуйста, реально ли укоротить ее еще? )))
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
10.02.2014, 15:43     Поделитесь советом. Как сократить еще 1 символ. =) #2
Пробел убрать, а можно так если не ошибся:
C++
1
2
3
4
c>>a;
    a--;
    while(g+=a&1)a/=2;
    o<<g%3;
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
10.02.2014, 15:47     Поделитесь советом. Как сократить еще 1 символ. =) #3
C++
1
a/=2
Лучше использовать побитовый сдвиг. Работает шустрее:
SatanaXIII
10.02.2014, 15:48
  #4

Не по теме:

Ilot, это оффтоп.

Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
10.02.2014, 15:51     Поделитесь советом. Как сократить еще 1 символ. =) #5
Может тогда так?
C++
1
2
3
c>>a;
    while(g+=--a&1)--a;
    o<<g%3;
Хотя надо бы проверить будет ли это работать так же как и исходная программа...
Pavlov_Mikhail
0 / 0 / 0
Регистрация: 31.12.2013
Сообщений: 20
10.02.2014, 18:17  [ТС]     Поделитесь советом. Как сократить еще 1 символ. =) #6
Цитата Сообщение от mustimur Посмотреть сообщение
Пробел убрать, а можно так если не ошибся:
C++
1
2
3
4
c>>a;
    a--;
    while(g+=a&1)a/=2;
    o<<g%3;
пробелы не в счет. иначе следует весь код в одну строчку слить )))
так цикл не остановится. если g>0 то он будет виснуть

Добавлено через 2 минуты
Цитата Сообщение от Ilot Посмотреть сообщение
Может тогда так?
C++
1
2
3
c>>a;
    while(g+=--a&1)--a;
    o<<g%3;
Хотя надо бы проверить будет ли это работать так же как и исходная программа...
здесь на каждом шаге происходит двойное отнимание, а следует делить. да и цикл тоже не остановится при g>0
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
10.02.2014, 20:15     Поделитесь советом. Как сократить еще 1 символ. =) #7
А если так:
C++
1
while(g+=a=a<<1&1);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2014, 10:54     Поделитесь советом. Как сократить еще 1 символ. =)
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Pavlov_Mikhail
0 / 0 / 0
Регистрация: 31.12.2013
Сообщений: 20
11.02.2014, 10:54  [ТС]     Поделитесь советом. Как сократить еще 1 символ. =) #8
Цитата Сообщение от mustimur Посмотреть сообщение
А если так:
C++
1
while(g+=a=a<<1&1);
результат другой. я сделал по другому, но wa1, хотя при сравнение работы программ рабочей-длинной и рабочей-короткой ответ один и тот же. код
C++
1
2
for (I >> a, a--; g += a & 1, a /= 2;);
    O << g % 3;
Yandex
Объявления
11.02.2014, 10:54     Поделитесь советом. Как сократить еще 1 символ. =)
Ответ Создать тему
Опции темы

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