Для цілого числа, n
яке задовольняє n > 0
, запишіть його значення як шлях, що спадає справа, на основі його бінарного подання.
Правила
- Перший (найзначніший) набір бітів завжди знаходиться у верхньому лівому куті.
- Коли наступний біт встановлений (a
1
), намалюйте символ ("заповнений") у наступному рядку в тому ж стовпці, що і попередній намальований символ. Спробуйте використати пробіли ("порожні") для заповнення, але будь-який символ зробить, поки це завжди те саме. - Коли наступний біт не встановлено (a
0
), намалюйте символ ("заповнений") на тому ж рядку праворуч праворуч від попереднього намальованого символу. - Ваш код повинен підтримувати номери з принаймні 20 значущими бітами.
- Напишіть повну програму, функцію, лямбда тощо, але не фрагмент.
- Не допускаються провідні пробіли (або "порожні" знаки) / рядки
- Дозволена будь-яка кількість пробілів (або "порожніх" знаків) / рядків
- Будь-який вид 1D введення приймається: число, рядок, масив булевих і т.д. Будь-ласка, не змінюйте порядок бітів.
- Приймається будь-який вид візуального 2D виводу: на stdout, рядок (з будь-якими двома різними значеннями, що представляють "заповнене" та "порожнє"), ви навіть можете вивести матрицю, якщо хочете. Список номерів, здається, важко узгодити з правилом "без заголовків пробілів", але я відкритий для нього, якщо ви знайдете спосіб його використання. Примітка: якщо ви вирішили надрукувати або повернути рядок, використовувані символи повинні бути символами ASCII в діапазоні кодових точок [32-126].
- Стандартні лазівки заборонені.
- Це codegolf, тому найкоротший код виграє.
Приклади
Вхід: 1
*
Вхід: 2
**
Вхід: 3
*
*
Вхід: 4
***
Вхід: 5
**
*
Вхід: 6
*
**
Вхід: 7
*
*
*
Вхід: 25
*
***
*
Вхід: 699050
**
**
**
**
**
**
**
**
**
**
Вхід: 1047552
*
*
*
*
*
*
*
*
*
***********
Вхід: 525311
**********
*
*
*
*
*
*
*
*
*
*
[1,0,1]
так.
9
це 1001
було моїм вкладом 0011
. Це нормально?
1
першим, є частиною виклику, і (повторне) переміщення цього біта буде тривілізувати виклик, тому я боюся, що вам доведеться сказати вам ні, @TonHospel. Однак ви можете видалити його зі свого входу в програмі.