罗马数字是一个简单的数字系统,具有以下属性:
I = 1, V = 5, X = 10, C = 100)IV、XC)。每个这样的对被计算为两个值(例如IV = 5 - 1 = 4)的向后差分。您的工作是编写一个函数/程序F,它接受一个正整数n并生成一个代码片段F(n) (不一定用同一种语言)。输出的代码片段必须具有以下属性:
F(n)作为一个完整的程序必须输出数字n。F(a)+\!\!\!+\,F(b)作为一个程序( +\!\!+的意思是级联)必须输出a+b,如果a≥b,b−a则不然。b−a大小写优先的方式发出的任意数量的代码片段(请考虑一个带有+s和-s的算术表达式,但是-D39的两边被翻转,其优先级高于+)。-s)。你的分数是F的字节计数。以字节为单位的最短代码获胜。
如果F(10)输出代码片段ABC,而F(3)输出代码片段xyz:
ABC应该输出10。xyz应该输出3。ABCxyz应该输出13。xyzABC应该输出7。ABCABCABC应该输出30。ABCABCxyzxyzABCxyzxyzABC应该输出40,因为=> 10 + 10 +3+ (10-3) +3+ (10-3) = 40此外,如果F(8)输出代码片段****:
ABC****xyz应该输出10 + 8 + 3 = 21。****ABCxyz应该输出(10-8) + 3 = 5。xyz********ABC应该输出(8-3) + (10-8) = 7。xyz****ABC,它包含三个连续严格递增的数字(3、8、10)。发布于 2021-03-09 11:17:27
n=>`t=this;s=~~t.s-(t.p<${n}&&2*p)+(p=${n}),{get x(){print(s)}}.x`核心思想是将print()放在getter函数后面。如果访问.x属性,它将打印总s。这被放置在生成的代码的末尾,以便在最后一次迭代中访问.x,当连接时,它变成.xt=this (不访问.x)。
发布于 2021-03-09 18:29:43
n->"import java.util.*;import java.io.*;import java.util.jar.*;interface Main{Listl=new ArrayList();static void main(String[]a)throws Exception{var z=Main.class.getPackageName();for(var e:System.getProperty(\"java.class.path\").split(System.getProperty(\"path.separator\"))){if(!e.endsWith(\".jar\")){var b=new File(e+File.separatorChar+z);var d=b.listFiles();Arrays.sort(d);for(var f:d){var n=f.getName();if(n.endsWith(\".class\")){Class.forName(n.substring(0,n.length()-6));}}}}int s=0;for(int i=0;i0&&l.get(i)>l.get(i-1)?l.get(i-1)*2:0);System.out.print(s);}}\nclass _"+new java.util.Date().getTime()+"_"+System.nanoTime()+"{static{Main.l.add("+n+");}}//"Main接口有一个静态List字段,所有生成的类都在它们的静态初始化器中添加一个整数。main方法尝试加载包中的所有类以运行它们的静态初始化器。F(a)每次都会返回不同的值,因为它试图使用当前时间使类名唯一,因此不能通过使用变量来存储F(a)的结果来缩短F(a) + F(a)。
发布于 2021-03-10 19:03:03
import sys;print("""R=%s
class A():
def __del__(s):print(a)
if"a"in locals():
if"p"in locals()and p代码的更易读版本:
import sys
print("""
number = %s
class PrintOnExit():
def __del__(self):
# This object will only be destroyed when the interpreter exits
print(result)
if "result" in locals():
if "previous" in locals() and previous < number:
result -= previous
result += number - previous
else:
result += number
if "print_on_destroy" not in locals():
print_on_destroy = PrintOnExit()
result = number
previous = number
""" % sys.argv[1])
```#qcStackCode#https://codegolf.stackexchange.com/questions/220403
复制相似问题