3 голоса
 
547 просмотров
25.08.2019 / 13:11  RblSb

Функция поворота кубика

Квест-вопрос.
Представим обычный шестигранный кубик, положение цифр на нем относительно друг друга не имеет значения.
Пусть он лежит стороной N вверх. Он может поворачиваться на 90 градусов в любую сторону, то есть поворачиваться любой ближайшей стороной. Количество поворотов не ограничено, направление может быть любым (в 4 стороны). Реализуйте алгоритм со структурой такого кубика, где будут функции поворота в каждую сторону и возможность получить число на любой из шести сторон (относительно пространства, а не куба).
https://i.imgur.com/EahOTQv.png
Пример интерфейса:
  1. interface Dice {
  2.     function rotateUp():Void;
  3.     function rotateDown():Void;
  4.     function rotateLeft():Void;
  5.     function rotateRight():Void;
  6.     // возвращает число сверху/снизу кубика
  7.     function getUpSide():Int;
  8.     function getBottomSide():Int;
  9.     // спереди/сзади
  10.     function getFrontSide():Int;
  11.     function getBackSide():Int;
  12.     // слева/справа
  13.     function getLeftSide():Int;
  14.     function getRightSide():Int;
  15. }
ЯП любой.
Ответы
 
4 голоса
 
# 26.08.2019 / 06:39  Askalite
  1. //верх, низ, перед, зад, лево, право
  2. int upSide, bottomSide, frontSide, backSide, leftSide, rightSide
  3.  
  4. //аккумулятор
  5. int a
  6.  
  7. setDice(upSide, bottomSide, frontSide, backSide, leftSide, rightSide):void
  8.  
  9. rotateUp(){
  10.     a=frontSide, frontSide=downSide, downSide=backSide, backSide=upSide, upSide=a
  11. }
  12. rotateDown(){
  13.     a=frontSide, frontSide=upSide, upSide=backSide, backSide=downSide, downSide=a
  14. }
  15. rotateLeft(){
  16.     a=frontSide, frontSide=rightSide, rightSide=backSide, backSide=leftSide, leftSide=a
  17. }
  18. rotateRight(){
  19.     a=frontSide, frontSide=leftSide, leftSide=backSide, backSide=rightSide, rightSide=a
  20. }
  21.  
  22. getUpSide():upSide
  23. getBottomSide():bottomSide
  24. getFrontSide():frontSide
  25. getBackSide():backSide
  26. getLeftSide():leftSide
  27. getRightSide():rightSide
26.08.2019 / 09:36  RblSb
Верно! Я очень плохо описал вопрос, но рад что кто-то разобрал.
Оригинальное решение:
https://github.com/osakana1101.../lib/Dice/common.hpp
Всего: 1

Реклама

Мы в соцсетях

tw tg yt gt