jasne že by sa tam použila platnosť pytagorovej vety ..skôr ide o to ako ju najlepšie uplatniť kedže sa mi v tom vidi karel taky problematicky .. skusal som to spravit tak ze by sa stale nastavila strana A o +1 a tak by sa postupne strany B a C zvysovali o +1 kym by sa nedosiahla platnost pyt. vety ale nejak som sa s tym nedopracoval do zdarneho konca
EDIT: neprečítal som si ten článok na wiki do konca
až potom som si všimol Generátory pytagorejských čísel
// Spojený príspevok Pia 17.11.17 18:28Môj kód vyzerá teraz takto .. neviem či je uplne spravny ak vobec ale momentalne najde pravouhlé trojuholníky ktorých sucet stran je mensi ako pocet beeprov na prvej pozicii akurat ze v zadani to chce aby to pisalo aj nasobne trojuholniky ako napr 3,4,5 → 6,8,10 vo vztahu a=2n+1, b=2n^2 + 2*n, c=2n^2 + 2*n +1 mi všetky násobne trojuholníkyy vynecháva ...
Kód:
#include <karel.h>
void goWest();
void goEast();
void goNorth();
void goSouth();
void runK();
void goBack();
void clear();
void pickB();
int main(){
int a_side=0;
int b_side=0;
int c_side=0;
int n_var=1;
int n_of_beepers=0;
turnOn("ps3.kw");
setStepDelay(100);
while (beepersPresent()){
pickBeeper();
n_of_beepers ++;
}
loop(n_of_beepers){
putBeeper();
}
goSouth();
movek();
goEast();
while( frontIsClear() && (a_side + b_side + c_side<n_of_beepers)){
loop(2*n_var+1){
putBeeper();
a_side ++;
}
movek();
loop(2*(n_var*n_var)+(2*n_var)){
putBeeper();
b_side ++;
}
movek();
loop(2*(n_var*n_var)+(2*n_var)+1){
putBeeper();
c_side ++;
}
n_var ++;
goSouth();
if(frontIsClear()){
movek();
goWest();
runK();
goEast();
}
else{
goNorth();
runK();
goEast();
}
}
goEast();
runK();
goNorth();
runK();
goEast();
turnOff();
return 0;
}
void goWest(){
while(notFacingWest()){
turnLeft();
}
}
void goEast(){
while(notFacingEast()){
turnLeft();
}
}
void goNorth(){
while(notFacingNorth()){
turnLeft();
}
}
void goSouth(){
while(notFacingSouth()){
turnLeft();
}
}
void runK(){
while (frontIsClear()){
movek();
}
}
void goBack(){
goSouth();
if(frontIsClear()){
movek();
}
else{
goNorth();
runK();
goWest();
}
goWest();
runK();
goEast();
}