Итак, у моего друга было интересное домашнее задание. Ее задачей было создать бриллиант на основе пользовательского ввода. Образец алмаза на основе ввода ( 5 ):
************
***** *****
**** ****
*** ***
** **
*----------*
** **
*** ***
**** ****
***** *****
************
Не слишком сложно использовать вложенные циклы или рекурсию, как вам нравится.
Как вызов самому себе, я решил решить его с некоторыми дополнительными критериями:
- Разрешено использовать только 1 цикл
- Не разрешается использовать любые переменные, кроме входных данных и индекса вашего цикла
Я прошел 2/3 пути, но я знаю, что я просто вслепую прощупываю и хотел бы действительно понять решение.
Это немного похоже на этот Алмазный паттерн , но в их коде используются все конструкции, которых я пытаюсь избежать.
Самая важная информация, которую я нашел до сих пор, касается квадратичных уравнений, но либо у меня недостаточно данных, чтобы их использовать, либо я просто не настолько умен, чтобы это выяснить.
Вот куда я дошел:
******
*****
****
***
**
*
**
***
****
*****
******
С этим кодом:
<script type="text/javascript">
for(x=1;x<=(lines*2+2)*lines*2+(lines*2+2);x++) {
if( ((x-1)%(lines*2+2)) <= Math.floor(((Math.abs(( (x-1)/(lines*2+2))%(lines*2+2) -lines)-0.51)+1)) ) {
document.write("*");
}
if((x%(lines*2+2))==0) { document.write("\n"); }
}
</script>
Любая помощь приветствуется. Спасибо!
Edit:
Я пропустил большую часть задания. Другое требование заключается в том, что вы печатаете только один символ за раз.
Там имеет , чтобы иметь какое-то математическое соотношение между номером строки и номером столбца, которое можно использовать.