var str = "hello world";
var uniq = {};
var list = [];
var last = 0;
var resstr = ""
for(var i=0; i<str.length; i++){
let v = str[i];
if(uniq[v]){
list[uniq[v]-1] = true;
list[i] = true;
last = i;
}else{
uniq[v] = i+1;
}
}
if(last) list[last] = false;
for(var i=0; i<str.length; i++){
if(!list[i]) resstr+=str[i];
}
console.log(resstr); // he wrld
context=document.all.surface.getContext("2d");
document.all.surface
ищет канвас в родительском окне а должно в созданном, то есть вам надо как то передать GtWin в то место где вы берете контекст от канваса.choicesInit
у вас так же синхронная. соответственно await для нее тоже не нужен.choicesInit
. Для этого потребуется choicesInit
сделать асинхронной и возвращать из нее промис
Для решения конкретно этой задачи вам понадобятся помимо здравого смысла знание геометрии за 7 и 8 классы и тригонометрии.
порядок решения примерно таков:
1. обрабатываете данные длин стен строя массив точек.
2. обрабатываете данные ребер (красные линии на вашем видео) строя массив треугольников
3. решаете кучу геометрических и тригонометрических задач (найти высоту треугольника зная длинны его сторон, разбить треугольник на два прямоугольных треугольника, найти углы этих прямоугольных треугольников, найти координаты третей вершины зная координаты 2-х вершин, длинны сторон и углы, определить неоднозначность решения предыдущей задачи, а именно с какой стороны будет находиться третья вершина и т.д. и т.п)
Учитывая что вы несколько ХАМ, начатое уже было решение доделывать не буду, выложу как есть, делайте сами.