質問編集履歴

1

更新

2016/11/13 05:20

投稿

gyro16
gyro16

スコア89

test CHANGED
File without changes
test CHANGED
@@ -297,3 +297,213 @@
297
297
  ###補足情報(言語/FW/ツール等のバージョンなど)
298
298
 
299
299
  より詳細な情報
300
+
301
+ '''java
302
+
303
+ import java.util.*;
304
+
305
+
306
+
307
+ public class Main{
308
+
309
+ private static final Scanner scan = new Scanner(System.in);
310
+
311
+ static boolean flag = false;
312
+
313
+
314
+
315
+ public static void main(String[] args){
316
+
317
+
318
+
319
+ int n = scan.nextInt();
320
+
321
+ int[] d = new int[6];
322
+
323
+ Dice[] dices = new Dice[n];
324
+
325
+
326
+
327
+ for(int i = 0; i < n; i++){
328
+
329
+ for(int j = 0; j < 6; j++){
330
+
331
+ d[j] = scan.nextInt();
332
+
333
+ }
334
+
335
+ dices[i] = new Dice(d);
336
+
337
+ }
338
+
339
+
340
+
341
+ for(int i = 0; i < n - 1; i++){
342
+
343
+ for(int j = n - 1; j > i; j--){
344
+
345
+ flag = checkSameDice(dices[j], dices[j - 1]);
346
+
347
+ if(flag == true)break;
348
+
349
+ }
350
+
351
+ if(flag == true)break;
352
+
353
+ }
354
+
355
+ System.out.println(flag? "No" : "Yes");
356
+
357
+ }
358
+
359
+
360
+
361
+ public static boolean checkSameDice(Dice diceA, Dice diceB){
362
+
363
+ flag = false;
364
+
365
+ for(int i = 0; i < 4; i++){
366
+
367
+ for(int j = 0; j < 4; j++){
368
+
369
+ flag = Arrays.equals(diceA._d, diceB._d);
370
+
371
+ if(flag == true)break;
372
+
373
+ diceB.rollEast();
374
+
375
+ }
376
+
377
+ for(int j = 0; j < 4; j++){
378
+
379
+ flag = Arrays.equals(diceA._d, diceB._d);
380
+
381
+ if(flag == true)break;
382
+
383
+ diceB.rollSouth();
384
+
385
+ }
386
+
387
+ flag = Arrays.equals(diceA._d, diceB._d);
388
+
389
+ if(flag == true)break;
390
+
391
+ diceB.rollRight();
392
+
393
+ }
394
+
395
+ return flag;
396
+
397
+ }
398
+
399
+ }
400
+
401
+
402
+
403
+ class Dice{
404
+
405
+
406
+
407
+ int[] _d = new int[6];
408
+
409
+ public static final int
410
+
411
+ TOP = 0, SOUTH = 1, EAST = 2,
412
+
413
+ WEST = 3, NORTH = 4, BOTTOM = 5; // 定数
414
+
415
+
416
+
417
+ public Dice(int[] d){ // コンストラクタ
418
+
419
+ for(int i = 0; i < 6; i++){
420
+
421
+ _d[i] = d[i];
422
+
423
+ }
424
+
425
+ }
426
+
427
+
428
+
429
+ public void rollSouth(){
430
+
431
+ int tmp = _d[TOP];
432
+
433
+ _d[TOP] = _d[NORTH];
434
+
435
+ _d[NORTH] = _d[BOTTOM];
436
+
437
+ _d[BOTTOM] = _d[SOUTH];
438
+
439
+ _d[SOUTH] = tmp;
440
+
441
+ }
442
+
443
+
444
+
445
+ public void rollNorth(){
446
+
447
+ int tmp = _d[TOP];
448
+
449
+ _d[TOP] = _d[SOUTH];
450
+
451
+ _d[SOUTH] = _d[BOTTOM];
452
+
453
+ _d[BOTTOM] = _d[NORTH];
454
+
455
+ _d[NORTH] = tmp;
456
+
457
+ }
458
+
459
+
460
+
461
+ public void rollEast(){
462
+
463
+ int tmp = _d[TOP];
464
+
465
+ _d[TOP] = _d[WEST];
466
+
467
+ _d[WEST] = _d[BOTTOM];
468
+
469
+ _d[BOTTOM] = _d[EAST];
470
+
471
+ _d[EAST] = tmp;
472
+
473
+ }
474
+
475
+
476
+
477
+ public void rollWest(){
478
+
479
+ int tmp = _d[TOP];
480
+
481
+ _d[TOP] = _d[EAST];
482
+
483
+ _d[EAST] = _d[BOTTOM];
484
+
485
+ _d[BOTTOM] = _d[WEST];
486
+
487
+ _d[WEST] = tmp;
488
+
489
+ }
490
+
491
+
492
+
493
+ public void rollRight(){
494
+
495
+ int tmp = _d[SOUTH];
496
+
497
+ _d[SOUTH] = _d[WEST];
498
+
499
+ _d[WEST] = _d[NORTH];
500
+
501
+ _d[NORTH] = _d[EAST];
502
+
503
+ _d[EAST] = tmp;
504
+
505
+ }
506
+
507
+ }
508
+
509
+ '''