可索引的奎因


14

这项挑战的目标是制作一个程序,输出其源代码的第n个字母,其中n作为程序的输入。像大多数quine挑战一样,不允许您将源代码读取为文件或使用任何内置的quine函数。

输入值

整数0 <= n <len(程序)。

输出量

程序的第n个字符(不是字节)。

获奖

像大多数代码高尔夫问题一样,您可以使用最少的字节数来解决挑战,从而赢得挑战。

奖金

-5%如果您的程序支持负索引python样式(例如-1将是程序的最后一个字符)。如果与以下奖金一起使用,您的范围必须支持负指数。
-20%如果您的程序除了上述要求之外,还支持范围作为输入(任何格式)。
-25%如果您的程序同时完成了两个奖励。

排行榜

这是一个堆栈片段,用于按语言生成常规排行榜和获胜者概述。

为了确保您的答案显示出来,请使用以下Markdown模板以标题开头。

# Language Name, N bytes

N您提交的文件大小在哪里。如果您提高了分数,可以将旧分数保留在标题中,方法是将它们打掉。例如:

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

如果您想在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字:

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

您还可以将语言名称设置为链接,然后该链接将显示在页首横幅代码段中:

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


禁止奎因内建物吗?
Mego 2016年

@Mego是的,他们是。
TheNumberOne'2

奖金是累积(100%-20%-5%= 75%)还是乘以(100%* 80%* 95%= 76%)?
ETHproductions '02

实际未读取其输入的程序是否计数?
尼尔

@ETHproductions堆栈。
TheNumberOne '16

Answers:


12

0.75

(也碰巧是CJam多种语言,可能还有许多其他语言。)

0

期望在STDIN上输入:

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

当然,任何一位数字都有效。并不是Pyth中最有趣的挑战。


1
它也恰好是许多其他语言的综合语言。
Mama Fun Roll

也在PlatyPar工作
Cyoce '16

1
和Japt,Jolf,以及几乎所有具有隐式输出的语言
ETHproductions's

9
和PHP,这显然是打高尔夫球的最佳语言。
user253751 '16

8

Javascript ES6,31个字节

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

说明

标准的quine框架:

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

[prompt()],是附加组件,它在生成的quine字符串的输入索引处获取值。


6

𝔼𝕊𝕄𝕚𝕟,9个字符/ 19个字节

⟮ɕṡ+ᶈ0)⎖ï

Try it here (Firefox only).

是的,第19个字节!

0 也可以工作(并且更好),但是对于我来说,这太琐碎了。

此外,ℹ ï,⧺ï也可以,但是不允许使用quine函数。

说明

标准quine框架是⟮ɕṡ+ᶈ0

)⎖ï 接受结果的quine字符串,并在输入索引处获取字符。


奖励解决方案,11.4个字符/ 25.65字节

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

Try it here (Firefox only).

此人有资格获得5%的奖金,但仍未超过我的原始提交。

说明

这个使用堆栈。ᵖ…ɕṡ+ᶈ0;只需将quine字符串的各个字符推入堆栈,然后ôᵍï直接在堆栈中的输入索引(正或负)处输出该字符。


您为什么还没有对此进行编码?
Addison Crump

更新太快了!跟不上!
Mama Fun Roll

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

Ruby,53 * 0.75 = 39.75

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

生成一个HEREDOC字符串,2在其自己的行上以分隔,将其连接(*2),然后2通过字符常量添加最后一个。使用Ruby内置的对其进行切片String#[],它支持正整数,负整数和范围(以形式输入m..n)。$><<输出。(puts此处需要额外的空间)。


我认为gets.to_i与会做相同的事情eval gets,并且要更清楚。它不会处理非整数输入,但是无论如何都没有必要
Fund Monica的诉讼

通常这就是我要做的,但这会获得处理Ranges的好处。(此外,由于完成比赛而没有奖金)。
histocrat

啊,我错过了。我的错。
Fund Monica的诉讼

3

Ruby,38.25字节

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

支持负索引和范围。我大胆地拿起两个$><<eval从histocrat伎俩,而奎因招是别人的,首先,所以我会做这个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的边缘。它不会以文件形式读取其自身的源代码,但会读取其自身的源代码。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.