编写一个程序,将其自身的源代码向后打印出来,即eniuq。
得分:
- +50(如果您使用来自互联网的提取数据)。
- +25,如果您阅读自己的源代码。
- 每个字符+1点
- 最低分获胜。
规则:
- 请勿使用其他文件(例如
reverse.txt
) - 最小代码长度为两个字符。
- 您的程序不能是回文。
+10
可以说“分数比实际多10个字符”或“代码可以包含10个不会多的字符”。得分”或其他解释。
编写一个程序,将其自身的源代码向后打印出来,即eniuq。
得分:
规则:
reverse.txt
)+10
可以说“分数比实际多10个字符”或“代码可以包含10个不会多的字符”。得分”或其他解释。
Answers:
!hcuO
我实际上不知道它是如何工作的,但是如果您下载了解释程序,并且编写了代码!hcuO
,那么您会得到Ouch!
要运行此程序,您需要执行以下程序:
huh.exe !hcuO
实际上,它将查找名为的文件!hcuO
,但该文件不存在,因此输出Ouch!
huh?
正确,尽管我很难找到合适的文档。看来用途是预期的,huh.exe <path to source code>
并且Ouch!
返回的是无效路径。尝试将代码放入实际文件中,并将该文件作为参数提供给它,huh?
然后看看会发生什么。有趣的是,它生成的Notes.txt
文件带有一些注释。
a 2
a 2
表示a
时间2。所以答案是2 a
。
1#
。输出为#1
。
reifitnedi detcepxenU :rorrExatnyS
输出SyntaxError: Unexpected identifier
,至少在Chrome控制台中
tnemetats erofeb ; gnissim :rorrExatnyS
=> SyntaxError: missing ; before statement
。
1#
输出:
#1
i2
哪里 i
虚数。
产出 2i
很多字符,但我想不出基于C语言的简单方法。
#include<iostream>
#include<string.h>
#define p(t) std::cout<<'}'<<';'<<')'<<strrev(&std::string(#t)[0])<<t;
char* strrev(char*p){char*t=p;char*q=p;while(q&&*q)++q;for(--q;p<q;++p,--q)*p=*p^*q,*q=*p^*q,*p=*p^*q;return t;}
int main(){p("(p{)(niam tni};t nruter;q*^p*=p*,q*^p*=q*,q*^p*=p*)q--,p++;q<p;q--(rof;q++)q*&&q(elihw;p=q*rahc;p=t*rahc{)p*rahc(verrts *rahc;t<<)]0[)t#(gnirts::dts&(verrts<<')'<<';'<<'}'<<tuoc::dts )t(p enifed#>h.gnirts<edulcni#>maertsoi<edulcni#");}
重击
$ dnuof ton dnammoc :found :hsab-
-bash: dnuof: command not found
长度:31个字符。
SH
$ dnuof ton dnammoc :found :hs-
sh: dnuof: command not found
长度:29个字符。
该版本无法在某些Linux发行版上运行,但可以在OSX上运行。
tcsh
$ .dnuof ton dnammoC :found.
.dnuof: Command not found.
长度:26个字符。
csh
% .dnuof ton dnammoC :found.
.dnuof: Command not found.
长度:26个字符。
获奖者是:
sh
$ dnuof ton :found :hsk
ksh: dnuof: not found
长度:21个字符。
以上内容适用于所有基于* unix的操作系统。
dnuof
dnuof
安装的发行版(无论安装了什么)。该死的黑客。
dnuof
?:D它做什么?
"8k,'!1+,@
如果您的解释器在"
添加额外的空间后未解释换行,则此方法有效。如果您的解释器确实这样解释了换行,则此11个字符的解决方案有效(因为字符串文字中的重复空格被解释为一个):
"9k,'!1+,@
如果我可以g
不加惩罚地使用,那么这些也可以工作(分别为7和8个字符):
"5k,g,@
和
"6k,g,@
$_=q{print~~reverse"\$_=q{$_};eval"};eval
旧的52个字符的答案(27分+ 25分)
open+0;print ~~ reverse <0>
读取自己的源,将反面存储在标量中,然后打印出来。
scalar
操作员可以被替换~~
。但是,您需要在分数上加上+25才能阅读自己的源代码。
$_='say"lave;\047",~~reverse,"\047=_\$"';eval
,但是您的解决方案更短:-)请注意,您可以使用来将其打成39个字符say
。希望您能战胜所有深奥的怪异:-)
print
使用@Tomas替换say
?最终不打印任何内容。
-Mfeature=say
选项运行perl 吗?
标准奎因 (26个字符):通过定义一个函数并将其自己的定义传递给引号:
|.(,],2#{:)'|.(,],2#{:)'''
可能会缩短。
特定于J的 字符(33个字符):通过定义一个变量并询问变量定义在哪个文件中,即这个文件,然后打印出该文件的内容:
1!:2&2|.1!:1(4!:4 a=:<'a'){4!:3''
必须从脚本保存并运行(即不在REPL中,因为问题的答案是“您的参数未在文件中定义”,因此没有文件可读取)。
alert($("#answer-16051 pre code").text().split("").reverse().join(""))
现在使用jQuery(如微型技术在注释中建议的那样),并手动进行包装,<pre><code>
这样我就可以使用,text()
而不必担心这篇文章中的其他代码块会造成干扰。<h4>
在我测试时,手动包装与chromeium不兼容,因此现在它应可在大多数浏览器中使用。
如果从该页面运行该程序,则会在其正上方找到代码块,并反转其内容,并将其放入警报框中。
它很容易验证,只需将其粘贴到开发控制台即可。
querySelector
…
querySelector
现在将其交换了一下。我想研究一下jQuery的可能性,但是看起来我需要花费更长的时间。
jQuery
提示。(我昨天才开始学习JavaScript。)
不知道我是否正确理解了作业。但是这是一个PHP尝试:
while(!isset($s) || $s) echo isset($s) ? array_pop($s) : ($s = str_split(file_get_contents(__FILE__)) and null);
编辑:这可以短得多:
echo strrev(file_get_contents(__FILE__));
但是因为它可以这么简单,所以可能不是要问的问题...
>? ;)llun dna ))__ELIF__(f$(tilps_rts = s$( : )s$(pop_yarra ? )s$(tessi ohce )s$ || )s$(tessi!(elihw ;"stnetnoc_"=.f$ ;'teg_elif'=f$ php?<>?}};ESLAF nruter;"ec6x\i66x\02x\e47x\96x\rw
;还有更多)。另外,包括您的字符数;这是代码高尔夫。另外,似乎您正在阅读源文件,因此将25个字符添加到字符计数中,这就是您的得分。最低分获胜。
array_pop
为array_shift
以查看源代码,而不是向后...
ESLAF nruter
ie return FALSE
)。
|
.snoisserpxe ro stnemetats BALTAM ni dilav ton si retcarahc tupni ehT :rorrE
请注意,该解决方案要求您以特殊字符(alt + 0160)开头,并且它会精确打印反转的消息。(与python解决方案不同)
52个字符的实际解决方案:
A='printf "A$ lave;\047`echo $A|rev`\047=A"';eval $A
但是要当心!诚实在当今世界没有回报!罚款太低!!
6个字符+ 25 = 31:
rev $0
rev $0
产生错误:rev: illegal option -- b
。
q=_=>("q="+q+";q()").split("").reverse().join("");q()
(q=_=>`(q=${q})()`.split("").reverse().join(""))()
(q=_=>`(q=${q})()`.split``.reverse().join``)()
(q=_=>[...`(q=${q})()`].reverse().join``)()
请帮助我缩短时间。
q=_=>[...`q=${q}`].reverse().join``
效果也一样。
KNU_
K
打印_UNK
,N
推送None
和U
推送0
。并_
在堆栈上弹出最高值(但不打印)。因此仅_UNK
打印。
K
输出_UNK
?