Questions tagged «compiler»

8
自编译器[关闭]
这是基于我之前听过的关于编译器的讨论,但是不幸的是,我不记得何时何地。 用任何可以自行编译的语言创建最短的编译器。针对没有“编译程序”指令(这可能不包括某些版本的VAX)的任何合理的ISA(68K,x86,MIPS,ARM,SPARC,IBM BAL等)。从中读取源程序stdin并将生成的代码打印到中stdout。您可以将标准C库用于I / O和字符串处理(例如_printf)。您不需要编译整个语言,只需编译包含编译器的任何子集(即,仅打印汇编语言奎因虽然令人印象深刻,但不算作解决方案。)

5
相同代码不同字符
注意:此挑战仅允许使用已编译语言的答案 任务 您的任务非常简单,制作两个不同的程序,这些程序在编译时会产生相同的输出。 计分 这就是乐趣所在。您的分数将是一个程序中唯一字节的数量。例如,如果您的两个程序(在IBM Code页面437中编码)是 ☻☻Program A 和 ☺Program B 完全在一个程序中的字符是 ☻☺AB 因此,分数为4。请注意,该分数☻在第一个程序中出现两次,但仅被计数一次。 您的目标是获得最高分数,最高分数可能是256。 这是一个适用于ASCII编码程序的计分程序。 规定 两个程序中的每个字节都应该能够被一个不同的字节替换,从而导致该程序无法编译成不同的结果,或者无法一起编译。删除任何字节都应这样做。 您可以使用任何编译标志,只要两个程序都使用相同的标志运行即可。 如果结果因机器而异,则表明编译应该是静态的(即,每次运行都不应改变),表明所要运行的机器。 编译的输出应逐字节相同,而不是“等效”或“足够相似”。 编译的输出应为非空 编译之间的警告/错误不必相同 如果程序或编译中包含不可打印的字符,请确保包含十六进制转储。尽管这在技术上不是必需的。

13
创建一个FizzBu​​zz编译器
欢迎来到编译器高尔夫的世界。您的任务是编写一个程序,该程序会生成另一个程序,以按规范播放FizzBu​​zz的变体。 您的编译器 编写一个编译器,以生成符合规范的FizzBu​​zz程序。此变体的规范以整数/字符串对数组的形式表示。 输入可以采用任何方便您的语言的形式。(我的示例使用n:xxxx,但这只是出于说明目的。) 每次调用编译器时,每个整数输入只能使用一次。 每对的整数将具有至少一个值。 每对字符串仅由四个ASCII字母组成。 输出必须是符合以下规则的单个完整程序。 输出可以是任何方便的形式,只要它是文本程序即可。(因此,没有返回的lambda表达式。) 对于不符合上述规则的输入,行为未定义。 您生成的FizzBu​​zz程序 编译器生成的程序将使用单个整数n作为输入。它将输出一个从1到n的数字序列,并在需要时用FizzBu​​zz字符串替换数字。 生成的程序必须使用与编译器相同的语言。 输入n可以采用适合您的语言的任何形式。 n的值至少为1。 输入编译器的至少一个整数的倍数的数字必须替换为所有与这些整数结合在一起的字符串。 不能用FizzBu​​zz字符串替换的数字必须以十进制ASCII输出。 例如; > GenFizzBuzz 3:Fizz 5:Buzz > a.out 5 1 2 Fizz 4 Buzz 计分 您的条目将根据编译器生成的程序的长度加上编译器的长度进行评分。使用以下每个参数多次运行编译器,然后将生成的程序的长度与编译器的长度相加,以得出分数。 只是计数。(无输入-生成的程序将在没有替换的情况下从1到n计数。) 只是高尔夫。(1:Golf-生成的程序将输出n次“ Golf” 。) 经典FizzBu​​zz。(3:嘶嘶声,5:嗡嗡声) (请注意,编译器需要为任何有效输入生成代码,而不仅仅是列出的这些。)

9
Brainf ** k一元及后退
在受限来源和其他此类挑战中非常有用的语言是 一元,其中程序与只有一个字符写在一个brainfuck衍生物。您的工作是编写一个程序,将程序从Brainfuck转换为一元,并编写一个相反的程序,两个程序都使用相同的语言。您的分数将是两个程序的长度之和。 您如何从Brainfuck转换为一元? 首先根据此表将您的Brainfuck代码转换为二进制代码: 现在按代码顺序将代码连接成一个巨大的二进制数。 前置一个 1字符串,以确保一个唯一的二进制数。 使用任何字符将二进制数转换为一元数。 例如:+.将为000000000000000000000000000000000000000000000000000000000000000000000000000000000000(84个零)。 Brainfuck->一元规格 由于生成的程序不可能太大,因此,请不要打印实际的程序,而仅打印生成的程序的长度。 通过stdin,arg函数等将Brainfuck程序作为字符串,并输出长度。 该程序将始终有效,并且其中仅包含这8个字符。 一元-> Brainfuck规格 您将必须实现与上述算法相反的方法。 再次由于存在巨大的问题,输入将是一个描述Unary代码长度的数字。 一如既往的I / O规则。 该程序将始终有效,并且其中仅包含这8个字符。 测试用例 你好世界- ++++++[>++++++++++++<-]>.>++++++++++[>++++++++++<-]>+.+++++++..+++.>++++[>+++++++++++<-]>.<+++[>----<-]>.<<<<<+++[>+++++<-]>.>>.+++.------.--------.>>+.=239234107117088762456728667968602154633390994619022073954825877681363348343524058579165785448174718768772358485472231582844556848101441556 斐波那契- ++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++>++++++++++++++++>>+<<[>>>>++++++++++<<[->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<]>[<+>-]>[-]>>>++++++++++<[->-[>+>>]>[+[-<+>]>+>>]<<<<<]>[-]>>[++++++++++++++++++++++++++++++++++++++++++++++++.[-]]<[++++++++++++++++++++++++++++++++++++++++++++++++.[-]]<<<++++++++++++++++++++++++++++++++++++++++++++++++.[-]<<<<<<<.>.>>[>>+<<-]>[>+<<+>-]>[<+>-]<<<-]<<++...=13067995222095367150854793937817629722033205198624522624687536186118993888926522550140580142585590431635487113180955099384652678100247403485397450658564826143160529351955621991895221530908461364045400531236124980271740502887704217664044858614821622360156740992393765239123681327824577149595724956207165558106099868913919959549896553103116795519592552089266360725543244154867904980260 这是代码高尔夫球,因此最低得分(以字节为单位)将获胜! 有人在Unary寻找解决方案吗?; P

3
编写脑力激荡的编译器
编写一个需要脑力激荡的程序并将其编译为可执行的机器代码的程序。您可以定位x86,x86_64,jvm(Java字节码)或armv6,并使用以下可执行格式之一:ELF,a.out,类文件,exe,com。该可执行文件应在Linux或Windows(或两者中的Java)上运行。 您的程序或生成的可执行文件都不能运行任何外部程序(例如另一个编译器,汇编器或解释器)。 最短的代码获胜。

1
自显示图像[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 11个月前关闭。 背景 有自解压.ZIP文件。通常,它们具有扩展名.EXE(并通过执行文件将其提取),但是将其重命名为时.ZIP,您可以使用一些ZIP提取软件来打开文件。 (这是可能的,因为.EXE文件需要特定的标头,而.ZIP文件则需要特定的预告片,因此可以构建同时具有.EXE标头和.ZIP预告片的文件。) 你的任务: 创建一个程序来创建“自显示”图像文件: 程序应以一些64x64图像(至少应支持4种颜色)作为输入,并以一些“组合”文件作为输出 程序的输出文件应由普通图像查看器识别为图像文件 当使用图像查看器打开输出文件时,应显示输入图像 对于任何操作系统或计算机类型,输出文件也应被识别为可执行文件。 (如果生成了用于不常见的操作系统或计算机的文件,那么如果存在开源PC仿真器,那就很好了。但是,这不是必需的。) 执行输出文件时,还应显示输入图像 很可能需要重命名文件(例如,从.PNG到.COM) 不需要程序及其输出文件在同一操作系统上运行;例如,该程序可以是Windows程序,并且可以在Commodore C64上执行输出文件。 获奖标准 产生最小输出文件的程序获胜 如果输出文件的大小根据输入图像而有所不同(例如,由于程序压缩了图像),则由程序创建的最大可能的输出文件代表了最多4色的64x64图像计数 顺便说说 在StackOverflow上阅读此问题时,我想到了以下编程难题。
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.