まだ解析しているRコードの最もlineい行は何ですか?


19

目標は、次のような1行のRコードを生成することです。

  1. できるだけ少ない
  2. できるだけ多くの文字で(最大100文字)
  3. そして、可能な限りいです(「lyい」とは、非効率的な計算戦略、終了セミコロンなどの無関係な文字などを意味します)。

あなたの最悪の、紳士をしてください!

勝利の客観的基準

勝利の答えは、次のポイントスケールに従って判断されます(最も多くのポイントを持つ答えが勝ちます)。

  • 0〜10(100ポイント)のシーケンスを生成します
  • できるだけ多くの文字(N)で
    • N = 100の場合、0ポイント
    • N <100の場合、N-100ポイント(つまり、100未満のすべての文字でポイントを失う)
    • N> 100の場合、2(100-N)ポイント(つまり、100を超える文字ごとに2ポイントを失う)
  • R Infernoのネガティブな例をできるだけ多く使用する
    • 引用例ごとに6ポイント
    • 各例は1回のみカウントされます。これは、「炎の墓に投獄された異端者」が一度だけ投獄できるためです。したがって、コード行の2つのグローバル割り当てでは、6ポイントしか得られません。

客観的な勝利基準ではありません。よくある質問をご覧ください。
dmckee

4
FAQ @dmckee :)基準はかなり客観的です
Tomas

基準をさらに明確にすることを試みました。基準3がまだ十分に客観的でない場合、私はむしろ好きですが、私はそれを排除することができます。
アリB.フリードマン

新しいスコアリングシステムがまったくわかりません。目標2は可能な限り長く(最大100文字まで)、100に近いほどポイントを少なくします(100以上のプログラムにポイントを指定します??!)。目標3はできるだけugいものにすることであり、youいプログラムにはもっと多くのポイントを与えます。ポイントは良いものか悪いものか?!
ピーターテイラー

@PeterTaylor目標#2の両方の式がマイナスのポイントを生成することを指摘するために編集されました。ポイントは良いです:「最も多くのポイントを持つ答えが勝ちます」。
アリB.フリードマン

回答:


25

72 96文字。

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

gliさ:

  • 標準関数名の再利用
  • シンボルを変数名として使用する
  • グローバルな割り当て
  • 正しい割り当て
  • 機能の自己再定義
  • 不要な末尾のセミコロン
  • 不要な添え字番号
  • 変数名の不要な引用
  • ワークスペースを、その後のコード実行をほぼ確実に中断する状態のままにします

シーケンス0-10を生成します(それを行うアイデアをAndrieに感謝します)。

出力:

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

4
それは本当に認知症です。この言葉をasめ言葉として使ったのは初めてです。一方、難解さを取り除き、慎重な批評から学ぶのは素晴らしい仕事です。よくできました。
イテレーター

鮮やかさ。私の頭のてっぺんから、い数字3,4,5,8,9がインフェルノにあります。グレーディング基準では96 + 6 * 5 = 126ポイントです。
アリB.フリードマン

素晴らしいソリューション。もう1つoneさ+ 100文字を追加しました。すべての"単一引用符で置き換え埋め込む問題を持つ。。"<-"("c",function(...){list(...)[[-1]];}->>"c");"["=0;"]"=10;c(c,c)(c,c)(c,invisible)("["[]:"]"[])[]
VLO

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]]))

lapplyon 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
ncharスペースをカウントすることで、98をカウントします。私のシステムでreplicateは、長さの引数として文字ベクトルを取ることはできませんが。
アリB.フリードマン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.