Как я могу создать этот шаблон чисел? - PullRequest
5 голосов
/ 30 ноября 2009

С учетом входов 1-32, как я могу сгенерировать приведенный ниже вывод?

в. из

  1. 1
  2. 1
  3. 1
  4. 1
  5. 2
  6. 2
  7. 2
  8. 2
  9. 1
  10. 1
  11. 1
  12. 1
  13. 2
  14. 2
  15. 2
  16. 2 ...

Редактировать Не домашнее задание .. просто недостаток сна.

Я работаю в C #, но я искал алгоритм, независимый от языка.

Редактировать 2 Чтобы обеспечить немного больше фона ... У меня есть массив из 32 элементов, который представляет двухмерную шахматную доску. Мне нужна была последняя часть этого алгоритма для преобразования между вектором и графиком, где индекс выравнивается по черным квадратам на шахматной доске.

Итоговый код:

 --Index;
 int row = Index >> 2;
 int col = 2 * Index - (((Index & 0x04) >> 2 == 1) ? 2 : 1);

Ответы [ 15 ]

1 голос
/ 30 ноября 2009

Использование Python:

output = 1
for i in range(1, 32+1):
  print "%d. %d" % (i, output)
  if i % 4 == 0:
    output = output == 1 and 2 or 1
1 голос
/ 30 ноября 2009
char codify(char input)
{
     return  (((input-1) & 0x04)>>2) + 1;
}
1 голос
/ 30 ноября 2009

В Groovy:

def codify = { i  ->
    return  (((((i-1)/4).intValue()) %2 ) + 1)
}

Тогда:

def list = 1..16
list.each {
    println "${it}: ${codify(it)}"
}
1 голос
/ 30 ноября 2009

Это довольно просто:

if (input == "1") {Console.WriteLine(1)};
if (input == "2") {Console.WriteLine(1)};
if (input == "3") {Console.WriteLine(1)};
if (input == "4") {Console.WriteLine(1)};
if (input == "5") {Console.WriteLine(2)};
if (input == "6") {Console.WriteLine(2)};
if (input == "7") {Console.WriteLine(2)};
if (input == "8") {Console.WriteLine(2)};

и т.д ...

НТН

1 голос
/ 30 ноября 2009

Это зависит от языка, который вы используете.

В VB.NET вы можете сделать что-то вроде этого:

for i as integer = 1 to 32
   dim intAnswer as integer = 1 + (Math.Floor((i-1) / 4) mod 2)
   ' Do whatever you need to do with it
next

Это может показаться сложным, но это только потому, что я поставил его в одну строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...