方向反转

第一题:反转方向

    康师傅最近打印了一张描述了从他家穿过所在城市到一个热门的饭店的路线说明,但是忘记了打印回家的路线说明。请帮康师傅转换出一个从饭店回家的路线说明。路线说明是一个由多条指令构成的集合。第一个指令形如"Begin on XXX",指明了路线的起始街道。每一个后续指令形如"Left on XXX" 或 "Right on XXX",指明转向到一定道路上。在反转方向的时候,所有的左转均变成右转,反之亦然,并且道路和转向的顺序也反转。请看例子中的几个输入样例。

输入:

     输入将从一个整形T开始,表示后续有T个实例。  每个实例由一个整数N开始,代表路线中的指令数。随后跟着N行,每行恰好一条指令,格式已在上文中描述过。

输出:

     对每一个测试实例,打印出路线的反向走法,每条指令一行。在每个测试实例之后打印一个空行。

约束:

     1 ≤ T ≤ 15

     2 ≤ N ≤ 40

    每行输入最多50个字符,只包含字符数字和空格,且不会包含连续的空格,末尾不会附加空格。

输入样例:

2                       //单独一行,表示有两个测试用例

4                       //第一个用例的指令数量,即有4行指令

Begin on Road A

Right on Road B

Right on Road C

Left on Road D

6                       //第二个用例的指令数量

Begin on Old Madras Road

Left on Domlur Flyover

Left on 100 Feet Road

Right on Sarjapur Road

Right on Hosur Road

Right on Ganapathi Temple Road

输出样例:

Begin on Road D

Right on Road C

Left on Road B

Left on Road A

                  //注意空行

Begin on Ganapathi Temple Road

Left on Hosur Road

Left on Sarjapur Road

Left on 100 Feet Road

Right on Domlur Flyover

Right on Old Madras Road

 

说明:

    在第一个测试实例中, 目的地位于 Road D,因此反方向的路线开始于 Road D。 在原路线中最后一次转向是从Road C 向左转到 Road D 。它在反向路线中,变成了从Road D向右转到Road C,且是第一次转向。

 

程序实现:

import java.util.Scanner;

public class Demo1 {

 /**
  * 主程序
  *
  * @param args
  */
 public static void main(String[] args) {
  // 从标准输入读取参数
  Scanner scanner = new Scanner(System.in);
  // 首先读取用例数
  String input = scanner.nextLine();
  int count = Integer.parseInt(input.trim());
  String str[];
  String str1[];
  String str2[] = new String[2];
  // 根据用例数进行循环处理
  for (int i = 0; i < count; i++) {
   input = scanner.nextLine();
   int length = Integer.parseInt(input.trim());
   str = new String[length];
   str1 = new String[length];
   for (int j = 0; j < length; j++) {
    input = scanner.nextLine();
    str2 = input.split("on");
    try {
     str[j] = str2[0];
     str1[j] = str2[1];
    } catch (Exception e) {
     e.printStackTrace();
    }
   }
   for (int j = length; j > 0; j--) {
    if (j == length) {
     System.out.println("Begin on" + str1[j - 1]);
     continue;
    }
    if (str[j].equals("Left ")) {
     System.out.println("Right on" + str1[j - 1]);
     continue;
    } else {
     System.out.println("Left on" + str1[j - 1]);
     continue;
    }
   }
   System.out.println();
  }
 }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 如果你是在使用三维图形库(如PyOpenGL)进行编程,可以通过以下代码Z轴: ```python glScalef(1.0, 1.0, -1.0) ``` 这会将Z轴的方向,使得物体在Z轴方向上被翻。 如果你是在使用NumPy进行矩阵计算,可以通过以下代码Z轴: ```python import numpy as np mat = np.identity(4) mat[2, 2] = -1.0 ``` 这会创建一个4x4的单位矩阵,然后将第三行第三列的元素设置为-1.0,从而Z轴的方向。 ### 回答2: 在Python中Z轴可以通过使用numpy来实现。假设我们有一个三维数组arr表示一个3D空间的网格,其中Z轴的索引为2。我们可以使用numpy提供的操作函数将arr在Z轴上。代码示例如下: ```python import numpy as np # 假设我们有一个三维数组arr表示一个3D空间的网格,其中Z轴的索引为2 arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]) # 使用numpy提供的操作函数将arr在Z轴上 reversed_arr = np.flip(arr, axis=2) print(reversed_arr) ``` 输出结果为: ``` [[[ 3 2 1] [ 6 5 4]] [[ 9 8 7] [ 12 11 10]]] ``` 以上代码中,我们使用`np.flip`函数来数组`arr`在Z轴上的值,通过设置`axis=2`参数,指定Z轴为2。最后,将后的数组赋给`reversed_arr`变量,并打印输出。这样就在Python中完成了对Z轴的。 ### 回答3: 在Python中,要实现对Z轴的,可以借助numpy库中的函数来实现。首先需要将三维数组换为numpy数组,然后使用numpy的矩阵函数进行操作。以下是具体的代码示例: ``` import numpy as np # 假设原始三维数组为arr,大小为(m, n, p) arr = ... # 你的原始数组 # 将三维数组换为numpy数组 arr_np = np.array(arr) # 对Z轴进行 arr_np_reversed = np.flip(arr_np, axis=2) # 将后的numpy数组回三维数组 arr_reversed = arr_np_reversed.tolist() # 输出结果 print(arr_reversed) ``` 在上述代码中,`np.array`函数用于将三维数组`arr`换为numpy数组`arr_np`。`np.flip`函数用于对numpy数组进行矩阵操作,其中`axis=2`表示对Z轴进行。最后,通过`tolist`函数将后的numpy数组`arr_np_reversed`回三维数组`arr_reversed`。最终结果可以通过`print`函数输出。 请注意,上述代码仅为一个示例,如果你有自己的原始三维数组,需要将其替换到代码中的相应位置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值