Моё меню Общее меню Пользователи Правила форума Все прочитано
Вернуться   uForum.uz > БЕСЕДКА > Разминка для мозгов
Знаете ли Вы, что ...
...нарушения правил форума наказываются. Старайтесь их не нарушать.
<< Предыдущий совет - Случайный совет - Следующий совет >>

Разминка для мозгов Загадки, задачи, головоломки - тренируем мозг


Ответить

 
Опции темы Опции просмотра
Старый 04.07.2014 14:39   #11  
uParty Member Known ID Group
Аватар для DarkUser
Оффлайн
Служу Его Божественной Тени!
Сообщений: 1,671
+ 4,505  1,372/657
– 164  33/27

Uzbekistan
Цитата:
Сообщение от Nestik Посмотреть сообщение
Вы правы!
Фигу, как минимум направление поворота взял неправильно, и как следствие - местами координаты перепутал.

Цитата:
Сообщение от Nadir Zaitov Посмотреть сообщение
Получилось так: 848,5273 282,8424
x: 848.5273282043654, y: 282.8424427347886, (Впрочем, на особую точность у чисел с плавающей запятой я-б рассчитывать не стал)
__________________
Are you my mommy?

Последний раз редактировалось DarkUser; 04.07.2014 в 14:41.
Ответить 
"+" от:
Старый 04.07.2014 14:44   #12  
Аватар для Nestik
Оффлайн
ZOG
eminence grise
Сообщений: 2,258
+ 277  835/480
– 353  232/151

UzbekistanОтправить сообщение для Nestik с помощью ICQ
Цитата:
Сообщение от DarkUser Посмотреть сообщение
местами координаты перепутал.
Необратил внимание. На чём считали и как? Я так прям в лоб на pl/sql что под рукой было.

create or replace procedure test_robot is
distance number;
angle number;
x number;
y number;
begin
distance := 1000;
angle := 1;
x := 0;
y := 0;
loop
if angle = 5 then
angle := 1;
end if;
if angle = 1 then
x := x+(SQRT((power(distance,2))/2));
y := y+(SQRT((power(distance,2))/2));
end if;
if angle = 2 then
x := x+(SQRT((power(distance,2))/2));
y := y-(SQRT((power(distance,2))/2));
end if;
if angle = 3 then
x := x-(SQRT((power(distance,2))/2));
y := y-(SQRT((power(distance,2))/2));
end if;
if angle = 4 then
x := x-(SQRT((power(distance,2))/2));
y := y+(SQRT((power(distance,2))/2));
end if;
distance:=distance/2; --расстояние на 2
angle := angle+1; --поворот на 90 градусов
exit when (distance < 0.001); --взрыв
end loop;
dbms_output.put_line(to_char(x)||'--'||to_char(y));
end test_robot;

Последний раз редактировалось Nestik; 04.07.2014 в 14:47.
Ответить 
"+" от:
Старый 04.07.2014 14:44   #13  
Real ID Group uParty Member Ultimate
Аватар для Nadir Zaitov
Оффлайн
Сообщений: 13,210
+ 4,958  9,176/3,940
– 170  137/105

UzbekistanОтправить сообщение для Nadir Zaitov с помощью Skype™
Shuhrat Ismailov, Если это задачка студентам, то вывод их решения должен быть примерно таким:

__________________
Тот факт, что медуза выжила 650 миллионов лет без мозгов, даёт надежду многим.

Последний раз редактировалось Nadir Zaitov; 04.07.2014 в 14:47.
Ответить 
"+" от:
Старый 04.07.2014 15:16   #14  
Real ID Group uParty Member Ultimate
Аватар для Nadir Zaitov
Оффлайн
Сообщений: 13,210
+ 4,958  9,176/3,940
– 170  137/105

UzbekistanОтправить сообщение для Nadir Zaitov с помощью Skype™
Код:
package qrobot;
import static java.lang.Math.sqrt;

public class QRobot {

     public static void main(String[] args) {
      
       final double sqr2=sqrt(2.0)/2.0;
       double distance=1000.0;
       double vX=sqr2, vY=sqr2;
       double x=0, y=0;
       while (distance>0.001) {
          x+=vX*distance;
          y+=vY*distance;
          // Подготовка к следующей итерации
          distance*=0.5;
          vX+=vY;
          vY-=vX;
          vX+=vY;
          }
     System.out.println("x="+x+", y="+y);
     }
Ответ: x=848.5273282043652, y=282.8424427347887
__________________
Тот факт, что медуза выжила 650 миллионов лет без мозгов, даёт надежду многим.
Ответить 
Реклама и уведомления
Старый 04.07.2014 15:33   #15  
uParty Member Known ID Group
Аватар для DarkUser
Оффлайн
Служу Его Божественной Тени!
Сообщений: 1,671
+ 4,505  1,372/657
– 164  33/27

Uzbekistan
Код:
var Bot = function(x, y, angle) {
    var state = {x: x || 0, y: y || 0, angle: angle || 0};

    this.rotate = function(angle) {
        state.angle = state.angle + angle;
        return this;
    };

    this.move = function(distance) {
        state.x = state.x + distance * Math.cos(state.angle);
        state.y = state.y + distance * Math.sin(state.angle);
        return this;
    };

    this.getPos = function() {
        return {x: state.x, y: state.y};
    };
    
    this.toString = function() {
        return JSON.stringify(state);
    }
};

var distance = 1000, angleStart = Math.PI / 4, angleStep = -Math.PI / 2
var step = 1;
var bot = new Bot(0, 0, angleStart);

while (distance > 0.001) {
    bot.move(distance);
    bot.rotate(angleStep);
    console.log(step++, ":", bot.getPos());
    distance = distance / 2;
};

alert ("step:" + step +  "; " + bot);
Демка (оси и разметку рисовать было откровенно лень)
__________________
Are you my mommy?
Ответить 
2 "+" от:
Старый 04.07.2014 17:21   #16  
Real ID Group uParty Member Ultimate
Аватар для Nadir Zaitov
Оффлайн
Сообщений: 13,210
+ 4,958  9,176/3,940
– 170  137/105

UzbekistanОтправить сообщение для Nadir Zaitov с помощью Skype™
На работе сказали, что эта часть кода плохо читается:
Цитата:
vX+=vY;
vY-=vX;
vX+=vY;
Это поворот вектора (vX, vY) на 90° по часовой стрелке.
А если «по-русски», то: (vX, vY) → (-vY, vX)
__________________
Тот факт, что медуза выжила 650 миллионов лет без мозгов, даёт надежду многим.
Ответить 
Ответить
Опции темы
Опции просмотра




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Advertisement System V2.5 By Branden
OOO «Единый интегратор UZINFOCOM»


Новые 24 часа Кто на форуме Новички Поиск Кабинет Все прочитано Вверх