我有一个名为puzzle的数组数组,我正在尝试返回一个新数组,第一个数组由
组成["a", "s", "i", "o", "s", "u", "z"]
然后下一个数组由数组的第二个索引
组成["k", "o", "t", "t", "e", "r", "s"]
等等。有什么好方法可以做到这一点。我正在考虑使用地图和两个计数器,但无法让它们在不同的时间运行或增加。任何帮助都是极好的。谢谢!
我想从此puzzle
返回一个新数组:
puzzle = [
["a", "k", "f", "o", "x", "e", "s"],
["s", "o", "a", "w", "a", "h", "p"],
["i", "t", "c", "k", "e", "t", "n"],
["o", "t", "s", "d", "h", "o", "h"],
["s", "e", "x", "g", "s", "t", "a"],
["u", "r", "p", "i", "w", "e", "u"],
["z", "s", "b", "n", "u", "i", "r"]
]
答案 0 :(得分:5)
Array#transpose
适合您:
puzzle = [
["a", "k", "f", "o", "x", "e", "s"],
["s", "o", "a", "w", "a", "h", "p"],
["i", "t", "c", "k", "e", "t", "n"],
["o", "t", "s", "d", "h", "o", "h"],
["s", "e", "x", "g", "s", "t", "a"],
["u", "r", "p", "i", "w", "e", "u"],
["z", "s", "b", "n", "u", "i", "r"]
]
puzzle.transpose
# => [["a", "s", "i", "o", "s", "u", "z"],
# ["k", "o", "t", "t", "e", "r", "s"],
# ["f", "a", "c", "s", "x", "p", "b"],
# ["o", "w", "k", "d", "g", "i", "n"],
# ["x", "a", "e", "h", "s", "w", "u"],
# ["e", "h", "t", "o", "t", "e", "i"],
# ["s", "p", "n", "h", "a", "u", "r"]]
答案 1 :(得分:0)
public class RobotController: MonoBehaviour
{
public float maxSpeed = 2f;
//a boolean value to represent whether we are facing left or not
bool facingLeft = true;
//a value to represent our Animator
Animator anim;
//Declare rigid2D
Rigidbody rigid2D;
// Use this for initialization
void Start()
{
//set anim to our animator
anim = GetComponent<Animator>();
//Initialize rigid2D
rigid2D = GetComponent<Rigidbody>();
}
// Update is called once per frame
void FixedUpdate()
{
float move = Input.GetAxis("Horizontal");//Gives us of one if we are moving via the arrow keys
//move our Players rigidbody
rigid2D.velocity = new Vector3(move * maxSpeed, rigid2D.velocity.y);
//set our speed
anim.SetFloat("Speed", Mathf.Abs(move));
//if we are moving left but not facing left flip, and vice versa
if (move < 0 && !facingLeft)
{
Flip();
}
else if (move > 0 && facingLeft)
{
Flip();
}
}
//flip if needed
void Flip()
{
facingLeft = !facingLeft;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
}
或者如果你不需要变种器......
class Array
def my_transpose!
size.times do |i|
0.upto(i) do |j| # iterate only through lower half
self[i][j], self[j][i] = self[j][i], self[i][j] # swap rows and cols
end
end
self # return the array itself
end
def my_transpose
dup.map(&:dup).my_transpose! # inner arrays are dup'ed, too
end
end
方法然后使用.transpose
[]
[0]说给我第一个结果。
puzzle.transpose[0]