インデックス可能なクイン


14

この課題の目標は、ソースコードのn番目の文字を出力するプログラムを作成することです。ここで、nはプログラムへの入力として与えられます。ほとんどのクインチャレンジと同様に、ソースコードをファイルとして読み取ったり、組み込みのクイン関数を使用したりすることはできません。

入力

整数0 <= n <len(program)。

出力

プログラムのn番目の文字(バイトではない)。

勝ち

ほとんどのcodegolfの質問と同様に、チャレンジを解決するには、最小バイト数を使用してチャレンジに勝ちます。

ボーナス

-5%プログラムが負のインデックスをPythonスタイルでサポートしている場合(たとえば、-1がプログラムの最後の文字になります)。以下のボーナスと併用する場合、範囲は負のインデックスをサポートする必要があります。
-20%プログラムが上記の要件に加えて、入力として範囲(任意の形式)をサポートする場合。
-25%プログラムが両方のボーナスを完了した場合。

リーダーボード

これは、通常のリーダーボードと言語ごとの勝者の概要の両方を生成するスタックスニペットです。

回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。

# Language Name, N bytes

N提出のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば:

# Ruby, <s>104</s> <s>101</s> 96 bytes

ヘッダーに複数の数字を含める場合(たとえば、スコアが2つのファイルの合計であるか、インタープリターフラグペナルティーを個別にリストする場合)、実際のスコアがヘッダーの最後の数字であることを確認します。

# Perl, 43 + 2 (-p flag) = 45 bytes

言語名をリンクにして、リーダーボードスニペットに表示することもできます。

# [><>](http://esolangs.org/wiki/Fish), 121 bytes


クインのビルトインは禁止されていますか?
メゴ

@Megoはい、そうです。
TheNumberOne

ボーナスはスタックするか(100%-20%-5%= 75%)、または乗算しますか(100%* 80%* 95%= 76%)?
ETHproductions

実際に入力を読み取らないプログラムはカウントされますか?
ニール

@ETHproductionsスタック。
TheNumberOne 16

回答:


12

Pyth、0.75

(また、たまたまCJamポリグロットであり、おそらく他の多くの言語です。)

0

STDINへの入力が期待されます。

llama@llama:~$ echo 0..0 | pyth -c '0'
0

もちろん、1桁でも機能します。Pythで最も興味深い課題ではありません。


1
他の多くの言語でも多言語になります。
ママファンロール

PlatyParでも動作します
チョイス

1
およびJapt、およびJolf、および暗黙的な出力を持つほぼすべての言語
-ETHproductions

9
また、PHPは明らかにゴルフに最適な言語です。
user253751 16

8

Javascript ES6、31バイト

$=_=>`$=${$};$()`[prompt()];$()

説明

標準のクインフレームワーク:

$=_=>`$=${$};$()`;$()

[prompt()]、アドオンであり、結果のクイン文字列の入力インデックスで値を取得します。


6

𝔼𝕊𝕄𝕚𝕟、9文字/ 19バイト

⟮ɕṡ+ᶈ0)⎖ï

Try it here (Firefox only).

あぁ、19番目のバイト!

0 動作します(そして、はるかに優れています)が、それは私の好みにはあまりにも些細です。

さらに、ℹ ï,⧺ï機能しますが、関数を使用することはできません。

説明

標準のクインフレームワークは⟮ɕṡ+ᶈ0です。

)⎖ï 結果のクイン文字列を受け取り、入力インデックスで文字を取得します。


ボーナスソリューション、11.4文字/ 25.65バイト

⟮ᵖ…ɕṡ+ᶈ0;ôᵍï

Try it here (Firefox only).

これは5%のボーナスの対象となりますが、それでも私の元の提出物に勝るものはありません。

説明

これはスタックを使用します。ᵖ…ɕṡ+ᶈ0;単純に文字列の個々の文字をスタックにプッシュし、スタック内ôᵍïの入力インデックス(正または負)にある文字を直接出力します。


まだこれのエンコーディングを作成していないのはなぜですか?
アディソンクランプ

更新が速すぎます!追いつかない!
ママファンロール

5

CJam、12.35バイト

{s"_~"+ri=}_~

プログラムの長さは13バイトで、×0.95ボーナスの資格があります。オンラインでお試しください!

使い方

{         }      Define a code block.
           _~    Push a copy and execute the copy.
 s               Cast the original code block to string.
  "_~"+          Append "_~".
       ri        Read an integer from STDIN.
         =       Retrieve the character at that index.

4
もちろん、0...若干短くされているだろう
デニス

4

ルビー、53 * 0.75 = 39.75

$><<(<<2*2+?2)[eval gets]
$><<(<<2*2+?2)[eval gets]
2

2独自の行でa で区切られたHEREDOC文字列を生成し、連結(*2)して2から、文字リテラルを介してfinalに追加します。String#[]正の整数、負の整数、および範囲(形式での入力m..n)をサポートするRubyのビルトインを使用してスライスします。$><<出力されます。(putsここには余分なスペースが必要です)。


gets.to_i同じことをしeval gets、より明確になると思います。これは、非整数の入力を処理していないだろうが、それは必要はありませんとにかく
基金モニカの訴訟

それは通常私がやることですが、これはレンジを処理するためのボーナスを取得します。(チューリングが完了したことに対する存在しないボーナスも)。
histocrat

ああ、私はそれを見逃した。私の悪い。
ファンドモニカの訴訟

3

ルビー、38.25バイト

a="a=%p;$><<(a%%a)[eval gets]";$><<(a%a)[eval gets]

負のインデックスと範囲をサポートします。私は率直に両方$><<evalトリックと歴史家からトリックを拾いました、そして、クインのトリックは最初に他の誰かのものだったので、私はこのCWを作ります。


1

Python 2、46.55バイト

a="a=%r;print(a%%a)[input()]";print(a%a)[input()]

負のインデックスをサポートします。


はい、これは否定的な指標をサポートします。

1

Haskell、122バイト

main=getLine>>= \i->putChar$(!!(read i))$p++show p where p="main=getLine>>= \\i->putChar$(!!(read i))$p++show p where p="

ゴルフをしていない:

main=getLine>>= \i->putChar$(!!(read i))$p++show p
 where p="main=getLine>>= \\i->putChar$(!!(read i))$p++show p\n where p="

1

Befunge 93、5バイト

これはかなり(非常に)遅いですが、とにかく投稿します:

&0g,@

1
これは合法的なIMOであるという限界にあります。独自のソースコードをファイルとして読み取るのではなく、独自のソースコード読み取ります。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.