Какой ты программист?
От: fuyant  
Дата: 26.12.06 22:17
Оценка:
http://articles.org.ru/cfaq/index.php?qid=2520

ИМХО, чушь полная.
Я бы сделал наверное так (не знаю pl/2, и не знаю, есть ли там такой оператор):

i = (i == 1 ? 2 : 1);


Так как по условию задача может имееть всего два ответа и это решение очень легко в данном случае читается. ИМХО .
Если бы были шансы, что будут другие варианты входных данных и/или вариантов ответа, переделал бы через if/else if или switch для облегчения поддержки кода.
Плюс лишняя проверка не нужна (о которой говорится в 10м решении), хотя это уже некорректно, т.к. задано, что "i принимает значения 1 либо 2".
Re: Какой ты программист?
От: Lightpower Украина  
Дата: 26.12.06 23:05
Оценка: 4 (4) +10 -2
Здравствуйте, fuyant, Вы писали:

F>http://articles.org.ru/cfaq/index.php?qid=2520

...
F>
F>i = (i == 1 ? 2 : 1);
F>

...

Я в таких случаях пишу i=3-i;
--
LET`S ROCK!
Re: Какой ты программист?
От: VEAPUK  
Дата: 26.12.06 23:12
Оценка:
Здравствуйте, fuyant, Вы писали:

7. Математик.
Очень похоже на предыдущее, столь же элегантно, но опять-таки
встает проблема: как же в нем разобраться?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Какой ты программист?
От: VEAPUK  
Дата: 26.12.06 23:20
Оценка:
Здравствуйте, VEAPUK, Вы писали:

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


VEA>7. Математик.

VEA>Очень похоже на предыдущее, столь же элегантно, но опять-таки
VEA>встает проблема: как же в нем разобраться?
Искал именно его, всё не читал (((
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Какой ты программист?
От: mihalko Россия Простые рецепты
Дата: 27.12.06 04:08
Оценка: 6 (4) +3
Здравствуйте, fuyant, Вы писали:

i ^=3;
Мой кулинарный блог
Re: Какой ты программист?
От: qwertyuiop Российская Империя  
Дата: 27.12.06 05:35
Оценка:
Здравствуйте, fuyant, Вы писали:

2. if i=2 then i=1;
if i=1 then i=2;

2. Преподаватель программирования.
Это решение хуже предыдущего. Много ли, однако, обучающих
программированию сами написали и отладили хотя бы одну программу?


Вероятно составитель этого теста считает себя гением, а преподавателей идиотами, раз он им приписал такое решение. Однако сам он написал свои тесты на паскакале — и этим все сказано.
Я отвечаю за свои слова, а не за то как вы их интерпретируете!
Re[2]: Какой ты программист?
От: SergeCpp Россия http://zoozahita.ru
Дата: 27.12.06 05:46
Оценка:
Здравствуйте, mihalko!

i ^= 3;

Сразу так же подумал!!!

С наступающим!!!
http://zoozahita.ruБездомные животные Екатеринбурга ищут хозяев
Re[2]: Какой ты программист?
От: Кодёнок  
Дата: 27.12.06 06:18
Оценка:
Здравствуйте, qwertyuiop, Вы писали:

Q>Вероятно составитель этого теста считает себя гением, а преподавателей идиотами, раз он им приписал такое решение. Однако сам он написал свои тесты на паскакале — и этим все сказано.


Не идиотами, а теоретиками. Кем они зачастую и являются. Это простейшая ошибка из-за невнимательности. Они, так же как и ты, который не догадался что это pl/1, а не паскаль, на что в тексте дан очень четкий намек, и выдают решение №2
Re[3]: Какой ты программист?
От: qwertyuiop Российская Империя  
Дата: 27.12.06 06:18
Оценка: +1 :)
Здравствуйте, SergeCpp, Вы писали:

SC>i ^= 3;

SC>Сразу так же подумал!!!

Непереносимо!
А если программа будет выполняться на компьютере с троичной системой счисления?
Я отвечаю за свои слова, а не за то как вы их интерпретируете!
Re[3]: Какой ты программист?
От: qwertyuiop Российская Империя  
Дата: 27.12.06 06:26
Оценка: -3
Здравствуйте, Кодёнок, Вы писали:

Q>>Вероятно составитель этого теста считает себя гением, а преподавателей идиотами, раз он им приписал такое решение. Однако сам он написал свои тесты на паскакале — и этим все сказано.


Кё>Не идиотами, а теоретиками. Кем они зачастую и являются. Это простейшая ошибка из-за невнимательности. Они, так же как и ты, который не догадался что это pl/1, а не паскаль, на что в тексте дан очень четкий намек, и выдают решение №2


Могу прзнаться — я не знаю pl/1; кроме того — я никогда не писал на паскале и горжусь этим. Что же до твоего самоуверенного заявления, что "они выдают решение №2" — то это лишь твои домыслы граничащие с комплексом неполноценности (хочется самому себе казаться умнее преподавателей). Как раз теоретики такого не напишут. Это больше свойственно студентам-первокурсникам.

P.S. Я не преподаватель и никогда им не был.
Я отвечаю за свои слова, а не за то как вы их интерпретируете!
Re[4]: Какой ты программист?
От: Кодёнок  
Дата: 27.12.06 06:54
Оценка:
Здравствуйте, qwertyuiop, Вы писали:

Q>Могу прзнаться — я не знаю pl/1;


Думаешь я знаю? Первый раз увидел. Но догадался же.

Q>кроме того — я никогда не писал на паскале и горжусь этим.


И этим все сказано

Q>Что же до твоего самоуверенного заявления, что "они выдают решение №2" — то это лишь твои домыслы граничащие с комплексом неполноценности (хочется самому себе казаться умнее преподавателей). Как раз теоретики такого не напишут. Это больше свойственно студентам-первокурсникам.


Тот, кто написав сразу запускает программу, тут же её заметит. А тот, кто пишет на бумажке, нет. Дальше объяснять?
Re[5]: Какой ты программист?
От: qwertyuiop Российская Империя  
Дата: 27.12.06 06:58
Оценка:
Здравствуйте, Кодёнок, Вы писали:

Кё>Тот, кто написав сразу запускает программу, тут же её заметит. А тот, кто пишет на бумажке, нет. Дальше объяснять?


Осталось только понять, почему ты решил что преподаватели не запускают программы...
Я отвечаю за свои слова, а не за то как вы их интерпретируете!
Re[6]: Какой ты программист?
От: Кодёнок  
Дата: 27.12.06 08:05
Оценка: +3 :)))
Здравствуйте, qwertyuiop, Вы писали:

Кё>>Тот, кто написав сразу запускает программу, тут же её заметит. А тот, кто пишет на бумажке, нет. Дальше объяснять?


Q>Осталось только понять, почему ты решил что преподаватели не запускают программы...


потому что то, что написано на доске или на бумажке, нельзя запустить
Re[2]: Какой ты программист?
От: Unforgiver Россия  
Дата: 27.12.06 09:19
Оценка:
Здравствуйте, Lightpower, Вы писали:

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


F>>http://articles.org.ru/cfaq/index.php?qid=2520

L>...
F>>
F>>i = (i == 1 ? 2 : 1);
F>>

L>...

L>Я в таких случаях пишу i=3-i;


Там же внизу комментарии есть

Написано "Ни в одном из примеров не проверяется начальное значение переменной i".
Так что i = 3-i не совсем верно.
Всё заканчивается плохо. Если что-то закончилось хорошо — значит оно еще не закончилось.
Re[4]: Какой ты программист?
От: maxluzin Европа  
Дата: 27.12.06 09:21
Оценка: :))
Здравствуйте, qwertyuiop, Вы писали:

Q>Здравствуйте, Кодёнок, Вы писали:


Q>>>Вероятно составитель этого теста считает себя гением, а преподавателей идиотами, раз он им приписал такое решение. Однако сам он написал свои тесты на паскакале — и этим все сказано.


Кё>>Не идиотами, а теоретиками. Кем они зачастую и являются. Это простейшая ошибка из-за невнимательности. Они, так же как и ты, который не догадался что это pl/1, а не паскаль, на что в тексте дан очень четкий намек, и выдают решение №2


Q>Могу прзнаться — я не знаю pl/1; кроме того — я никогда не писал на паскале и горжусь этим. Что же до твоего


Я знал ПЛ/1 и писал на Паскале. Я не горжусь этим. Просто факт. Гордость должна быть где-то в другом месте...

Q>самоуверенного заявления, что "они выдают решение №2" — то это лишь твои домыслы граничащие с комплексом неполноценности (хочется самому себе казаться умнее преподавателей). Как раз теоретики такого не напишут. Это больше свойственно студентам-первокурсникам.


Выдал себя с потрохами...

Q>P.S. Я не преподаватель и никогда им не был.


Угу...
Re[2]: Какой ты программист?
От: VsevolodC Россия  
Дата: 27.12.06 09:36
Оценка:
Здравствуйте, mihalko, Вы писали:

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


M>
M>i ^=3;
M>

а если i было == 7 ? или 0 ?
имхо, лучше все таки
if (i != 1 && i != 2)
   return Error;
i = 3 - i;        /* меняем 1 на 2 или наоборот */
Re: Какой ты программист?
От: Axc  
Дата: 27.12.06 09:38
Оценка:
Здравствуйте, fuyant, Вы писали:

F>
i = (i == 1 ? 2 : 1);

i = !(i - 1) + 1;
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Какой ты программист?
От: qwertyuiop Российская Империя  
Дата: 27.12.06 09:45
Оценка: +2
Здравствуйте, Unforgiver, Вы писали:

U>Там же внизу комментарии есть


U>Написано "Ни в одном из примеров не проверяется начальное значение переменной i".

U>Так что i = 3-i не совсем верно.

Ага, только в начале написано

Переменная i представляет собой полное слово с фиксированной
точкой. i принимает значения 1 либо 2.

А потом он ехидничает что никто не проверяет значение.
Я отвечаю за свои слова, а не за то как вы их интерпретируете!
Re[4]: Какой ты программист?
От: Кодёнок  
Дата: 27.12.06 09:51
Оценка:
Здравствуйте, qwertyuiop, Вы писали:

Q>Ага, только в начале написано

Q>Переменная i представляет собой полное слово с фиксированной
Q>точкой. i принимает значения 1 либо 2.
Q>А потом он ехидничает что никто не проверяет значение.

Вообще-то программер с опытом уже научен, что спецификация тоже может содержать ошибки. Если вы договорились с программистом Н что он будет давать вашей функции 1 или 2, то это не значит что однажды вы не получите 3.
Re: Какой ты программист?
От: Кодёнок  
Дата: 27.12.06 09:58
Оценка:
Здравствуйте, fuyant, Вы писали:

F>http://articles.org.ru/cfaq/index.php?qid=2520


match (i)
{
  | 1 => 2
  | 2 => 1
  | _ => "whoops"
}

switch (i)
{
  case 1: return 2
  case 2: return 1
}
return some_error;


Кстати что интересно, при использовании pattern matching (или switch/case) в комбинации с возвратом значения случай "не 1 и не 2" приходит на ум сам собой, вы просто обязаны его обработать.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.