Нелогическое программирование - 2
На этот тема нелогического программирования касается непосредственно меня. Дело в том, что этим летом я на два месяца забил на программирование. К концу августа за программинг пришлось вернуться и после возвращения в мир программинга со мной стали твориться весьма странные вещи. Я начал замечать за собой откровенно глупые куски кода, но недавний случай для меня - это из ряда вон выходящее.
С начала сентября пришлось усиленно заниматься Паскалем в целях подготовки к олимпиаде.
Несколько дней назад мне пришлось решить задачу, условие ее звучало так:
"Счастливый" - это шестизначный билет, у которого суммы первых трех цифр равны суммам трех последних.
Эту задачу делали всем классом и на следующий урок мне предстояло проверить у ребят решение задачи и ответить на их вопросы (да, я подрабатываю учителем по информатике =)
К сожалению, начальные знания по программированию всем дали такие слабые и размытые, что большинство в классе было не в состоянии составить нормальный алгоритм.
Но, подойдя к одному из мониторов, я увидел примерно вот это:
begin
for a:=0 to 9 do
for b:=0 to 9 do
for c:=0 to 9 do
for d:=0 to 9 do
for e:=0 to 9 do
for f:=0 to 9 do
if a+b+c=d+e+f then writeln(a,b,c,d,e,f);
end.
Я был шокирован. Это просто гениально! Я тут же опомнился и страх поразил меня. Я вспомнил исходник своей программы и понял, что написал полную фигню:
uses CRT;
var i,m:longint;m_ret:boolean;
function tryHappy(var x:longint):boolean;
var p:array [1..6] of longint;c,c2,md:longint;
begin
for c:=1 to 6 do begin
md:=1; for c2:=1 to c do md:=md*10;
p[c]:=(x mod md) div (md div 10);
end;
if p[1]+p[2]+p[3]=p[4]+p[5]+p[6] then tryHappy:=true
else tryHappy:=false;
end;
begin
ClrScr;
for i:=100000 to 999999 do begin
if tryHappy(i) then begin write(i,' '); m:=m+1; m_ret:=false end;
if (m mod 11=0) and not m_ret then begin writeln;m_ret:=true end;
end;
end.
Мой одноклассник, программирующий лишь второй год, справился с задачей лучше меня.
Кажется, я тупею...
Комментарии:
Yanex – 29.09.2009 18:27
Ну, зато то решение содержит шесть (!) вложенных циклов. Это ж пипец!
vladikcomper – 06.10.2009 16:39
Да, кстати, можно было обойтись и двумя ))
Но факт остается фактом - я тупею О_о