Закінчення вкладок проти космічної війни
Таким чином, відбулася велика дискусія щодо того, чи використовувати вкладки чи пробіли для відступу / форматування коду. Чи можете ви допомогти університету вирішити суперечку, перейшовши на неймовірно божевільний унікальний метод форматування.
Ваше завдання - написати повну програму або функцію, яка розширює всі вкладки на чотири пробіли. А потім замінює пробіг n провідних пробілів на "/ (n - дві зірки тут) /". Ви отримаєте вхід через кілька рядків у будь-якому розумному форматі (один рядковий масив рядків для кожного нового рядка. Стовпчастий масив тощо)
Зразок входу безсоромно вкрали . Зауважте, що оскільки вкладки автоматично розширюються на чотири пробіли в SE, я представляю його як символ «^», але ви також повинні обробляти вкладки (кодова точка 0x09). Усі символи "^" являють собою таблицю.
Calculate the value 256 and test if it's zero
If the interpreter errors on overflow this is where it'll happen
++++++++[>++++++++<-]>[<++++>-]
+<[>-<
Not zero so multiply by 256 again to get 65536
[>++++<-]>[<++++++++>-]<[>++++++++<-]
+>[>
# Print "32"
++++++++++[>+++++<-]>+.-.[-]<
<[-]<->] <[>>
# Print "16"
+++++++[>+++++++<-]>.+++++.[-]<
<<-]] >[>
# Print "8"
++++++++[>+++++++<-]>.[-]<
<-]<
# Print " bit cells\n"
+++++++++++[>+++>+++++++++>+++++++++>+<<<<-]>-.>-.+++++++.+++++++++++.<.
>>.++.+++++++..<-.>>-
Clean up used cells.
[[-]<]l
^this is preceded by a tab
^^two tabs
^^^three tabs etcetera!
Вибірка зразка
Calculate the value 256 and test if it's zero
If the interpreter errors on overflow this is where it'll happen
++++++++[>++++++++<-]>[<++++>-]
+<[>-<
/**/Not zero so multiply by 256 again to get 65536
/**/[>++++<-]>[<++++++++>-]<[>++++++++<-]
/**/+>[>
/******/# Print "32"
/******/++++++++++[>+++++<-]>+.-.[-]<
/**/<[-]<->] <[>>
/******/# Print "16"
/******/+++++++[>+++++++<-]>.+++++.[-]<
<<-]] >[>
/**/# Print "8"
/**/++++++++[>+++++++<-]>.[-]<
<-]<
# Print " bit cells\n"
+++++++++++[>+++>+++++++++>+++++++++>+<<<<-]>-.>-.+++++++.+++++++++++.<.
>>.++.+++++++..<-.>>-
Clean up used cells.
[[-]<]l
/**/this is preceded by a tab
/******/two tabs
/**********/three tabs etcetera!
Оскільки університету потрібен простір для завантаження Vim та Emacs, вам дозволяється дуже мало місця для зберігання вашого коду. Тому це код-гольф і виграє найкоротший код. Ви можете припустити, що введення добре сформовано, а рядки з менш ніж чотирма пробілами (після заміни вкладок) можуть призвести до не визначеної поведінки.
Відмова від відповідальності
Ця "відмінна" стратегія форматування вийшла люб'язно Geobits і відтворена з його дозволу. Жоден програміст не постраждав під час постановки цього виклику.
/*
, чи можна вважати, що це не "добре сформований вхід"? Вихідний файл C ++ був би кращим тестом, оскільки його багаторядковий коментар /* */
, можливо, порушить деякі відповіді, які замінюють перший і останній провідні пробіли на /
, а потім переходять до заповнення пробілів *
.
/* */
код C ++, але цього разу на початку рядка. За вашою специфікацією, його слід залишити так, як є. Тут пастка є, і вже помічені помилкові відповіді, що регулярний вираз, як скажімо, /\** /
використовується для заповнення цих пробілів // зірочками, перетворить рядок у /***/
. Я також бачив це перетворення /*//*/
. Я припускаю, що обидва невірно.