Який найрідніший рядок коду R, який досі розбирає?


19

Метою є створення єдиного рядка коду R, який:

  1. Робить якомога менше
  2. Щонайбільше символів (максимум 100 символів)
  3. І це якомога некрасиво (де "потворне" можна вважати неефективними обчислювальними стратегіями, сторонніми символами, такими як кінцева крапка з комою тощо).

Робіть найгірше, джентльмен!

Об'єктивні критерії виграшу

Відповідь, що виграє, буде оцінюватися відповідно до наступної шкали балів (відповідь з найбільшою кількістю очок виграє):

  • Створіть послідовність від 0 до 10 ( 100 балів)
  • Як можна більше символів (N)
    • 0 балів, якщо N = 100
    • N-100 балів, якщо N <100 (тобто втрачає очку за кожного символу під 100)
    • 2 (100-N) балів, якщо N> 100 (тобто втрачають два бали за кожен символ понад 100)
  • Використовуючи в якості багатьох прикладів негативних з R Інферно , як це можливо
    • 6 балів за наведеним прикладом
    • Кожен приклад рахується лише один раз. Це так тому, що "єретик, ув'язнений у [полум’яній гробниці", може бути ув'язнений лише один раз. Таким чином, два глобальних завдання у вашому рядку коду набирають лише 6 балів.

Не об'єктивні критерії виграшу. Див. FAQ.
dmckee

4
FAQ Ви @dmckee :) Критерії досить об'єктивні
Томаш

Я намагався зробити критерії ще більш явними. Якщо критерій 3 все ще недостатньо об'єктивний, я міг би його усунути, хоча мені це більше подобається.
Арі Б. Фрідман

Я взагалі не розумію нової системи балів. Завдання 2 - бути якомога довше (за умови максимум 100 символів), і ви даєте менше балів за те, що наближаєтесь до 100 (і вказуєте бали для програм довше 100 ??!); Завдання 3 - бути якомога потворнішим, і ви дасте більше балів за потворніші програми. Тож бали повинні бути хорошими чи поганими ?!
Пітер Тейлор

@PeterTaylor Відредаговано, щоб вказати, що обидві формули Цілі №2 дають негативні моменти. Бали хороші: "Виграє відповідь з найбільшою кількістю балів".
Арі Б. Фрідман

Відповіді:


25

72 96 символів.

`c`<-function(...){list(...)[[-1]];}->>`c`;`[`=0;`]`=10;c(c,c)(c,c)(c,invisible)(`[`[]:`]`[])[];

Потворність:

  • Використання стандартного імені функції
  • Використання символів як імен змінних
  • Глобальне призначення
  • Правильне призначення
  • Самовизначення функції
  • Непотрібна точка-крапка з комою
  • Непотрібні номери сценаріїв
  • Непотрібне цитування імені змінної
  • Залишає робочу область у стані, який майже напевно порушить будь-який наступний запуск коду

Створює послідовність 0-10 (спасибі Андріє за ідею зробити це).

вихід:

 [1]  0  1  2  3  4  5  6  7  8  9 10

4
Це справді недоумство. Це перший раз, коли я використав це слово як комплімент. З іншого боку, це чудова робота, щоб хтось знешкодив і навчився ретельної критики. Хороша робота.
Ітератор

Блискуча. У верхній частині моїх голосів цифри 3,45,8,9 у Inferno. Отже, це 96 + 6 * 5 = 126 балів за критеріями оцінювання.
Арі Б. Фрідман

Блискуче рішення. Додано ще одне неподобство + 100 чарів. Замініть всі "цитатами. "<-"("c",function(...){list(...)[[-1]];}->>"c");"["=0;"]"=10;c(c,c)(c,c)(c,invisible)("["[]:"]"[])[]
Вставте

7

Створіть послідовність від 0 до 10.

100 символів

{.=0;for(`~1` in c(1,2,3,4,5,6,7,8,9,10)){.=c(., `~1`,recursive=F)};print(unname(.[drop=T]));rm(.)}
 [1]  0  1  2  3  4  5  6  7  8  9 10

5

100 символів: Створіть послідовність від 1 до 10.

Зауважте, що цифри 2-10 НЕ в коді ... - Бонусні бали? :-)

Також зауважте, що він використовує lapplyдля досягнення максимальної продуктивності :)

unlist(lapply(LETTERS[-(11:26)],function(x) as.integer(charToRaw(x))-as.integer(charToRaw('A'))+1L))
#[1]  1  2  3  4  5  6  7  8  9 10 

2

100 символів

assign("a",1:10);b<<-paste(c(a),collapse=";");unlist(lapply(strsplit(b,";")[[1]],function(c)c[[1]]))

Не впевнений , що, якщо lapplyна strsplitце негативний приклад , але він упевнений , що має бути.

Повертається як персонаж:

 [1] "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10"

1
I(cumsum(Reduce("sum", replicate(paste0(as.integer(T),as.integer(T)), T), accumulate=1-F) - T >0))

має містити трохи менше 100 символів і якось створювати 0:10


1
Я рахую 98 через nchar, рахуючи пробіли. Хоча в моїй системі replicateне можна прийняти символьний вектор як аргумент довжини.
Арі Б. Фрідман
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.