Вспомнил одну задачу с первого курса. В ней текст длиной 121 символ нужно было вписат в квадрат размером 11х11. Таким образом зашифровать.
Решив, а потом дома изрядно поколдовав на компе из 80х я сделал решение очень красивым, но в памяти от него остался лишь след. Попробую заново его изобрести))
Давайте сначала нарисуем квадратную спираль,
это практически то же самое, но более наглядно. А потом уже решим задачу упомянутую выше.
Нарисовав её на листике уже можно найти закономерность: одну вправо, потом вниз, две влево потом вверх, три снова вправо и вниз, четыре и т.д.
1 - напрвление меняется по кругу, через 4 шага
2 - длина увеличивается через два шага
Осталось переложить это на FreeBASIC
ScreenRes 800,600
Центр экрана получается 400,300. Длина линии пусть будет 10
Рисуем вправо - line(400, 300)-(410, 300)
Теперь вниз - line -(410, 310)
если первую точку не указываем - рисует от последней поставленной точки.
Теперь шаг нужно увеличить - не 10, а 20
Возвращаемся влево - line -(390, 310)
и вверх line -(390, 290)
Снова увеличиваем темп - шаг=30
Вправо line -(390+30, 290)
вниз -line -(390+30, 290+30)
В последних строкам мне было лень считать - пусть считает компьютер))
Но что это за решение? Двоечника? Троечника? Так до вечера можно спираль рисовать)))
Оператор line
ведь может рисовать не только в абсолютных координатах рисовать(от левого верхнего угла экрана), но и в относительных - относительно последней поставленной точки.
ставим точку pset (400,300)
Рисуем вправо - line -STEP (10, 0)
Теперь вниз - line -STEP (0, 10)
Теперь шаг нужно увеличить - не 10, а 20
Возвращаемся влево - line -(-20, 0)
и вверх line -(0, -20)
Снова увеличиваем темп - шаг=30
Вправо line -STEP (30, 0)
вниз -line -STEP (0, 30)
Возвращаемся влево - line -STEP (-40, 0)
и вверх line -STEP (0, -40)
и т.д. уже штамповать(клонировать строки кода) легче, но до 500 копипастить ещё много
А такое решение уже тройка? четвёрка?
Ну как же без цикла?
line -STEP (i, 0)
line -STEP (0, i)
line -STEP (-(i+10), 0)
line -STEP (0, -(i+10))
next i
Отлично!?
Так результат тот же, но это я бы уже назвал - отлично))
screenres 800,600
dim i as integer
const k as integer=10
pset (400,300)
for i=k to 500 step 2*k
line -STEP (i, 0)
line -STEP (0, i)
line -STEP (-(i+k), 0)
line -STEP (0, -(i+k))
next i
sleep
Но я бы ещё намудрил в цикле - чтоб один line
был)) вместо четырёх...
✅
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
spinner, littleboo, t3ran13, aim, ianboil, analise, francisgrey, strecoza, mishka, sergiy, neo, vako, rbrown, gildar, ovchinnikov, andrvik, max-max, kanenakat, oleg257, zoss, dikaniovs, dimarss, la-bella-vita, tristamoff, kilobucks, ohlamoon, dany2323, maksina, yurgent71, zlody, dr-boo, amikphoto, arsar, volv, vasilisapor2, nefer, borodaus, turkish-r, renat242, oceanotechnic, markvial, nikalaich, gans91, gromozeka, lira, drim, status7, gryph0n, voltash, ladynazgool, ladykosha, decha, sharps, snaryaga, rubin, francesco, exan, retoldname, stranniksenya, alikssandra, gapel, polyakov, acidgarry, kvg, oagalakova, borisss, candy777, sterh, olga-fink, optimist, tatyanamishenko, yurchello, dayver, bammbuss, dmitrijv, graff0x, bombo, manavendra, mr-nikola, ondantr, nerengot, vladsm, mirgais, varja, upper, prifix, ili, abloud, dignityinside, foxycat, ksantoprotein, process, chugoi, nikulinsb, shafarevich, kanalex, tulencha, amalinavia, verdon, kito-boy, nikitosuna, sansey, izbushka, astramar, onur1s, propoker, assir, cryptovisitor, zelivsky, html, vredinka2345, benken, fxmonster, kash47, carpe-diem, ezavarov, makcl, marina-spring, azarovskiy, funt33, sinilga, samael27, kalter, valen-tina, mister-omortson, nightinga1e, apnigrich, siddxa, cryptobandera, doublingseason, necrogenesis, photofreediver, maryatekun, lologom, anykeycheg, delectat, prezza, yroslav94, akva22, worthless-man, tyi-ra, elcpa, dobrotanya, boliwar, veta-less, irkinmick, wmforum, jpigeon84, svetozarhobbot, archual, alexxela, elinafrost, fatima, burger-knig, zirodin, veterperemen, flint, charisma, bunakov
Поэтому я тоже проголосовал за него!
dobryj.kit теперь стал Делегатом! Ваш голос важен для всего сообщества!!!
Поддержите нас:
@sergiy, Поздравляю!
Ваш пост был упомянут в моем хит-параде в следующих категориях:
✅🤙 🚀
Сюда приплывал Моби Дик