fork download
  1. print.vec <- function(v)
  2. {
  3. cat("[")
  4. cat(v, sep = ", ")
  5. cat("]\n")
  6. }
  7.  
  8. OrderMaxMinDiff.Even <- function(n)
  9. {
  10. if (n %% 2) return(cat("nが奇数の場合にはこの関数では求められません。\n"))
  11. d <- n / 2 - 1
  12. print.vec(c(0, sapply(d:1, function(i) c(i, d + i)), n - 1))
  13. print.vec(c(0, sapply(1:d, function(i) c(d + i, i)), n - 1))
  14. cat(sprintf("最小階差が最大値%dになる並べ方は以上の2通りです。\n\n", d))
  15. }
  16.  
  17. OrderMaxMinDiff.Even(10)
  18. OrderMaxMinDiff.Even(16)
  19. OrderMaxMinDiff.Even(256)
Success #stdin #stdout 0.22s 39408KB
stdin
Standard input is empty
stdout
[0, 4, 8, 3, 7, 2, 6, 1, 5, 9]
[0, 5, 1, 6, 2, 7, 3, 8, 4, 9]
最小階差が最大値4になる並べ方は以上の2通りです。

[0, 7, 14, 6, 13, 5, 12, 4, 11, 3, 10, 2, 9, 1, 8, 15]
[0, 8, 1, 9, 2, 10, 3, 11, 4, 12, 5, 13, 6, 14, 7, 15]
最小階差が最大値7になる並べ方は以上の2通りです。

[0, 127, 254, 126, 253, 125, 252, 124, 251, 123, 250, 122, 249, 121, 248, 120, 247, 119, 246, 118, 245, 117, 244, 116, 243, 115, 242, 114, 241, 113, 240, 112, 239, 111, 238, 110, 237, 109, 236, 108, 235, 107, 234, 106, 233, 105, 232, 104, 231, 103, 230, 102, 229, 101, 228, 100, 227, 99, 226, 98, 225, 97, 224, 96, 223, 95, 222, 94, 221, 93, 220, 92, 219, 91, 218, 90, 217, 89, 216, 88, 215, 87, 214, 86, 213, 85, 212, 84, 211, 83, 210, 82, 209, 81, 208, 80, 207, 79, 206, 78, 205, 77, 204, 76, 203, 75, 202, 74, 201, 73, 200, 72, 199, 71, 198, 70, 197, 69, 196, 68, 195, 67, 194, 66, 193, 65, 192, 64, 191, 63, 190, 62, 189, 61, 188, 60, 187, 59, 186, 58, 185, 57, 184, 56, 183, 55, 182, 54, 181, 53, 180, 52, 179, 51, 178, 50, 177, 49, 176, 48, 175, 47, 174, 46, 173, 45, 172, 44, 171, 43, 170, 42, 169, 41, 168, 40, 167, 39, 166, 38, 165, 37, 164, 36, 163, 35, 162, 34, 161, 33, 160, 32, 159, 31, 158, 30, 157, 29, 156, 28, 155, 27, 154, 26, 153, 25, 152, 24, 151, 23, 150, 22, 149, 21, 148, 20, 147, 19, 146, 18, 145, 17, 144, 16, 143, 15, 142, 14, 141, 13, 140, 12, 139, 11, 138, 10, 137, 9, 136, 8, 135, 7, 134, 6, 133, 5, 132, 4, 131, 3, 130, 2, 129, 1, 128, 255]
[0, 128, 1, 129, 2, 130, 3, 131, 4, 132, 5, 133, 6, 134, 7, 135, 8, 136, 9, 137, 10, 138, 11, 139, 12, 140, 13, 141, 14, 142, 15, 143, 16, 144, 17, 145, 18, 146, 19, 147, 20, 148, 21, 149, 22, 150, 23, 151, 24, 152, 25, 153, 26, 154, 27, 155, 28, 156, 29, 157, 30, 158, 31, 159, 32, 160, 33, 161, 34, 162, 35, 163, 36, 164, 37, 165, 38, 166, 39, 167, 40, 168, 41, 169, 42, 170, 43, 171, 44, 172, 45, 173, 46, 174, 47, 175, 48, 176, 49, 177, 50, 178, 51, 179, 52, 180, 53, 181, 54, 182, 55, 183, 56, 184, 57, 185, 58, 186, 59, 187, 60, 188, 61, 189, 62, 190, 63, 191, 64, 192, 65, 193, 66, 194, 67, 195, 68, 196, 69, 197, 70, 198, 71, 199, 72, 200, 73, 201, 74, 202, 75, 203, 76, 204, 77, 205, 78, 206, 79, 207, 80, 208, 81, 209, 82, 210, 83, 211, 84, 212, 85, 213, 86, 214, 87, 215, 88, 216, 89, 217, 90, 218, 91, 219, 92, 220, 93, 221, 94, 222, 95, 223, 96, 224, 97, 225, 98, 226, 99, 227, 100, 228, 101, 229, 102, 230, 103, 231, 104, 232, 105, 233, 106, 234, 107, 235, 108, 236, 109, 237, 110, 238, 111, 239, 112, 240, 113, 241, 114, 242, 115, 243, 116, 244, 117, 245, 118, 246, 119, 247, 120, 248, 121, 249, 122, 250, 123, 251, 124, 252, 125, 253, 126, 254, 127, 255]
最小階差が最大値127になる並べ方は以上の2通りです。