05AB1E打高尔夫球的技巧


28

你有任何提示荷兰国际集团在05AB1E,通过创建一个高尔夫语言阿德南

您的提示至少应针对05AB1E。

请为每个答案发布一个提示。


2
点评来源:提示问题是话题。
mbomb007

Answers:


20

由于它不是05AB1E GitHub页面上Wiki的一部分(我认为应该),所以我现在就将其添加到这里,以便我自己更好地理解它。

如何使用字典?

05AB1E具有以下word.ex词典文件,其中包含它知道的所有单词。但是,我们如何访问该词典中的单词?让我们以这个词"testing"为例:

"testing"可以在字典文件的第1453行上找到。由于前两行不是单词,并且我们需要索引为0的单词,
所以我们减去3。所以,现在有了索引(1450),但是如何使用它呢?

我们用打开并开始一个压缩字符串。然后,我们查看info.txt文件的第二列。(因此,00为;01为;等等。)
在这种情况下,"testing"表示î(14)和»(50)。

因此,压缩字符串为"testing"“ 在线尝试。与几乎所有05AB1E代码段一样,如果您不访问字符串,则尾随是可选的,因此在这种情况下,也无法正常工作

注意事项:

info.txt文件中没有任何索引的所有字符都可以按原样使用。例如,这对于添加a s以输出复数形式而不是单数形式或使用标点符号很有用,.?!
ÿ要在字符串中插入堆栈中的值时,也可以使用(string-interpolation)。
注意:每个在info.txt文件中没有任何索引的松散字符都将被视为以下压缩类型的单词。

您可以使用不同类型的压缩字符串:

  • ':按原样使用单个压缩词(无需尾随')- 'î»:“测试”
  • :使用两个带空格分隔符的压缩字(无需结尾)- „î»î»:“测试测试”
  • :接受三个带空格分隔符的压缩字(无需尾随)- …î»î»î»:“测试测试”
  • :使用带空格分隔符的压缩字符串- “î»î»“:“测试测试”
  • :压缩后的字符串不带任何隐含空格- ’î»î»’:“ testingtesting”
  • :以带空格定界符的标题大小写压缩字符串- ”î»î»”:“测试测试”
  • :使用带空格分隔符的压缩字符串以全大写形式- ‘î»î»‘:“ TESTING TESTING”

这是一个有用的程序,用于基于空格分隔的单词输入来获取压缩的字符串:

'“? lAð«Ã#¸˜ vyU "€‚ƒ„…†‡ˆ‰Š‹ŒŽ•–—™š›œžŸ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîï" Dâ vy"“ÿ“".V XlQi y?1#] '“,

在线尝试。

该程序将:

  1. 取输入作为小写,删除任何非字母字符(除空格),然后通过空间(分割的话lAð«Ã#),或包裹词语的列表如果只有一个字被输入(¸˜
  2. 遍历每个单词(vyU
  3. 然后在字典中的每个压缩单词上有一个内部循环("€...ï"Dâvy),它将尝试作为05AB1E程序("“ÿ“".V)运行
  4. 如果它等于当前单词,它将打印它并中断内部循环 XlQiy?1#

使用输入时good bye world,输出将为“‚¿Þ¡‚ï“在线尝试。

注意:为了使此生成器正常工作,您仍然需要查看字典中是否存在该单词,它将忽略任何特殊字符或复数单词。仅会找到字典中完全相同的单词。

这是我…Ÿ™‚ï!在字符串“ hello world!”中使用的示例。并’‚¿Þ¡ ÿ ‚ï!’用于字符串“再见ÿ世界!”。请注意如何使用空格和感叹号,因为它们在info.txt文件中没有索引。另外,它用于ÿ插入位于堆栈顶部的“残酷”,但不幸的是,它不是字典的一部分(但仍使用下面部分的方法进行了压缩)。

如何压缩不属于字典的字符串?

尽管words.ex词典文件很大(准确地说是10,000个单词),但是您可能需要一个不属于其中的单词,或者只是一个乱七八糟的字符串。那么有没有办法压缩它们呢?
通过使用.•,肯定是一个基于base-255压缩字母的压缩字符串。注意:此方法只能用于小写字母和空格中的字符。

这是一个有用的程序,可将单词/字符串转换为基于255的压缩的基于字母的字符串:

vAyk})> 27β 255B ".•ÿ•"

在线尝试。

上面这个程序的作用是:

  • vAyk})>:获取输入的各个字母的1索引字母索引,空格变为索引0
  • 27β:将这些索引从27转换为一个数字
  • 255B:使用05AB1E自己的代码页将此数字转换为Base-255
  • ".•ÿ•":在此压缩字符串之前.•放置首尾

这是一个示例答案,其中@Kaldo用于.•zíΘ•压缩单词“ goose”。

如何压缩大整数?

假设我们要为某物使用很大的数字,但实际上不能通过pow计算来检索它。例如,假设我们18238098189071058293出于任何原因都想要访问大整数。

在这种情况下,我们可以同时使用前导和尾随来压缩格式中的数字[1-9][0-9]+
上面的示例编号将变为•15Y₁Ò'Θpc•在线尝试。同样,就像压缩的字典字符串一样,尾部可以有选择地删除

可选地,当整数足够小而只需要使用2个压缩字符时,我们可以Ž改用,在这种情况下,我们不需要尾随字节来关闭它,并且整数以3个字节(而不是4个)压缩。例如,整数13562将导致•rl•,但是由于它仅使用两个字符,因此可以Žrl改为。

同样,[101, 355]可以使用Ƶ05AB1E的代码页中的附加字符,将范围内的数字压缩为2个字节。因此,例如,Ƶ–可以用于integer 250这里是所有可用数字的概述。这些字符从Base-255转换为Base-10,然后添加101(因为范围内的数字[0,100]已经是1或2个字节)。

如何在这些15Y₁Ò'Θpcrl创造的呢?很简单,使用05AB1E自己的代码页将数字转换为Base-255。所以,你可以使用下面的程序得到一个压缩的数字,它将再使用Ƶ.Ž..•...•取决于压缩整数大小:

101 355Ÿså i 101-255B"Ƶÿ" ë 255B Dg2Qi "Žÿ" ë "•ÿ•"

在线尝试。

在这里,其中一个例子答案@Emigna使用•3Èñ•的整数246060

如何压缩整数列表?

有时您希望压缩整数的整个列表,而不是单个数字。例如,假设我们[5,93,17,83,4,44,32,19,4,45,83,90,0,14,3,17,17,81]出于任何原因想要列表。在这种情况下,我们可以改用以下方法:•4βŸ{©£MG]q‡dZΘp•94в 在线尝试。

这是一个有用的程序,用于生成此压缩数字和我们要转换为的基数:

Z>© β 255B ®s"•ÿ•ÿв"

在线尝试。

上面这个程序的作用是:

  • Z>:获取输入列表的最大数量+1(©:并将其存储在寄存器中)
  • β:将输入列表从基数max+1转换为单个数字
  • 255B:压缩这个数字(就像我们在上一节中所做的一样)
  • ®s"•ÿ•ÿв":以以下格式返回结果:前导,压缩数字,max + 1,尾随в

这是我•4Œ”dóŒfÝŸĀTUÕáOyÖOÀÁàu¼6¹₆Žr‡_›y³eß₂©ǝ²ƶ"SAÎAñ'¡û†Ø(•91в用来压缩列表的示例答案[85,30,29,39,28,37,33,88,31,40,34,89,35,41,32,90,36,38,42,43,44,60,45,61,46,62,47,63,48,64,49,65,81,50,66,51,67,52,68,53,69,86,54,70,87,55,71,56,72,82,57,73,79,80,58,74,59,75,76,77,78,83,84]
PS:在此答案中,•6j|eDEJÞó(ÍêΓλùÄÞKüzHÇ-ø`JδŠ₂+Öηôî®À8†6/ðÎ6ùøΓ°ÓĆ;ˆ©Ā•2ô是一个等字节(57)的替代方案,因为所有数字都恰好有两位数字。在某些情况下(尤其是较小的列表),这可能是一个较短的选择。

整数压缩与整数列表压缩:

有了这两个,它可以任意选择。有时压缩列表更短,有时压缩整数,有时完全不同的替代选择更短。因此,请始终使用自己的判断力和打高尔夫球技巧进一步打高尔夫球,而不是完全依赖上述生成器。这里有一些例子:

[44, 59]@Emigna的答案中使用):

[2,4,6,0]@Emigna的答案中使用):

  • •3ā•7в 是6个字节(由压缩整数列表生成器生成)
  • Ž3ā7в 是5个字节
  • 但是在这种情况下,Ž9¦S最好使用4字节(将整数2460压缩为数字列表)

10101001100101001在我的答案中使用):

  • •a½₄Ƶ6®í• 是9个字节(由压缩的大整数生成器生成)
  • •1∊}•2вJ 是8个字节(由带有合并的压缩整数列表生成器生成)
  • 但是在这种情况下•1∊}•b,最好使用6个字节(压缩的整数列表,使用a 代替二进制,隐式地加入)

[85,30,29,39,28,37,33,88,31,40,34,89,35,41,32,90,36,38,42,43,44,60,45,61,46,62,47,63,48,64,49,65,81,50,66,51,67,52,68,53,69,86,54,70,87,55,71,56,72,82,57,73,79,80,58,74,59,75,76,77,78,83,84]在我的答案中使用):


12

隐式输入

早在05AB1E发行时,隐式输入是相当新的和奇特的。如今,似乎有必要与其他竞争性语言(如Jelly,MATL,Pyth等)保持一致。

例如,当您想将两个数字相加时,可以执行以下操作II+

I    # Input_1.
 I   # Input_2.
  +  # Add them up.

在这里测试


但是,使用隐式输入,我们可以缩短到1个字节,即+

+    # Take two numbers implicitly and add them up.

在这里测试


仅当堆栈的长度小于操作员的友好程度时,才会发生这种情况。最后一个例子是3++运算符的Arity 为2,而堆栈中只有1个元素:

3    # Push the number 3 on top of the stack.
 +   # Request implicit input and add to the 3.

在这里测试


8

子串

£是用于获取bstring 的第一个字符的命令a
例如: "hello_world"5£ -> "hello"

但是,如果b有一个索引列表,则会将字符串分成(最多)这些大小的一部分。
例如: "hello_world"5L£ -> ['h', 'el', 'lo_', 'worl', 'd']


8

预定义变量

它们在05AB1E中有些隐藏。这是所有预定义变量的列表:

  • ¾0如果在此命令前未更改counter_variable,则按此按钮。
  • X1如果在使用此命令前未更改变量X ,则按U
  • Y2如果在使用此命令前未更改变量Y ,则按V
  • ®-1如果此命令之前没有更改寄存器,则按©
  • ¯[]如果在此命令之前未将任何内容添加到global_array ,则推送(空数组)。
  • ¸[""]如果没有输入,则推入一个空堆栈。(谢谢@Emigna找到这个。)

24
¾推送0 =>几乎等于非助记符
Fatalize

6
@Fatalize:0也会推0。¾推送一个计数器变量,该计数器变量初始化为0。如果只想推送0,当然0更自然,但如果要推送5,0,75¾7则比短2个字节5 0 7
Emigna '16

7
在我们那个时代,¾意味着.75,我曾经与事实击败Pyth。这些新奇的高尔夫语言没有关于助记符的线索...
ETHproductions 16-10-16

31
不知道你们在说什么:p。print(3 / 4)在Python 2中给了我0
阿德南

2
如果是开始,请M-Inf
mbomb007 '17

7

使用画布(Λ

由于它不是文档的一部分,并且@Adnan目前有点忙于编写它,因此我现在请求允许在此处添加它作为提示。

画布功能(Λ)可用于在屏幕上绘制ASCII线。它具有三个必需的参数:

  • a长度:行的大小。这可以是单个整数,也可以是整数列表
  • b字符串:我们要显示的字符。它可以是单个字符,字符串,字符列表或字符串列表(在后三种情况下,它将一一使用所有字符,包括环绕)
  • c方向:应该画出字符线的方向。通常,我们有[0,7]方向的数字,可以使用一个或多个。还有一些特殊的选项需要一个特定的字符(稍后会有更多介绍)。

方向数字[0,7]映射到以下方向:

7   0   1
  ↖ ↑ ↗
6 ← X → 2
  ↙ ↓ ↘
5   4   3

一些示例05AB1E回答了使用Canvas的位置:

让我们做与上一个类似的操作,因此假设我们使用Λ具有以下三个参数的Canvas 函数:

  • [3,3,5,5,7,7,9,9]
  • b!@#
  • c[0,2,4,6]

这将给出以下输出:

  !@#!@#!
  #     @
  @ #!@ #
  ! @ # !
  # ! ! @
  @   @ #
  !#@!# !
        @
@!#@!#@!#

在线尝试。

那么它是怎样工作的?好了,这是上面这些输入的步骤:

  1. 向上(方向)绘制3字符()!@#0
  2. 向右(方向)绘制3-1字符()!@2
  3. 向下(方向)绘制5-1字符()#!@#4
  4. 向左(方向)绘制5-1字符()!@#!6
  5. 向上(方向)绘制7-1字符()@#!@#!0
  6. 向右(方向)绘制7-1字符()@#!@#!2
  7. 向下(方向)绘制9-1字符()@#!@#!@#4
  8. 向左(方向)绘制9-1字符()!@#!@#!@6

-1在那里,因为线路重叠。因此,前两个步骤是:

#
@
!

 !@

合并的是:

#!@
@
!

一些小注意事项:


1
我什至不知道05AB1E有一块帆布!
MilkyWay90,2018年

怎么...您是怎么知道的?源代码?
魔术章鱼缸

1
@MagicOctopusUrn来自@Adnan的答案中的大部分内容(PS:他的最新答案也很容易解释)。因为+×8我确实在看源代码。
Kevin Cruijssen

5

弹出或获取

与其他基于堆栈的语言一样,05AB1E的函数通常从堆栈中弹出(使用)其输入,并将其输出压入堆栈。

但是,某些函数从堆栈中获取其输入而不会消耗它们。一个示例是head函数,该函数¬从输入列表中产生第一个元素。在此处查看示例程序:¬+。这会将输入列表的第一个数字添加到该列表的每个数字。

要了解弹出的函数和获取的函数,请参见函数信息文件中的相应列。


@NeilA。谢谢!链接已更新
路易斯·门多

3

条件和循环

循环和条件语句在程序末尾会自动包含右括号,因此,如果您需要在循环/条件语句之外的内容,则只需在代码中添加它们即可。

例如,此(解开链)程序创建了一个第一个n质数的列表,不需要使用方括号。 [¹¾Q#NpiNˆ¼

但是,如果我们想对结果列表执行某些操作,例如使用delta,则需要首先关闭循环。 [¹¾Q#NpiNˆ¼]¯¥


3

05AB1E高尔夫小技巧

将通过我在此过程中学到的一些小技巧来扩展它。(仅亲自启动05AB1E。)

  • DÐs(swap)和Š(triple-swap a,b,cto c,a,b)组合使用(duplicate)和(triplicate)通常比在循环内使用©(save in global_variable)和®(push global_variable)短。这保存在这个回答我的一个字节中,以及两个这样的回答我的
  • ½(如果为1,则在a的末尾不需要将counter_variable加1)µ(而counter_variable!= a,do ...),因为它是隐式完成的(在我的这个答案中保存了一个字节)。
  • .B在换行符上隐式拆分。当我们在寻找(split)的替代品同时仍保留空项目时,这在我的答案中很有用¡(注意:当元素拆分后包含尾随空格时,链接答案中的解决方案将不起作用。)-希望内置被添加以拆分,但以后保留空白行。
  • (input-integer的哪个数字可以平均除以input-integer)将包含数字本身的数字0(而不是被零除错误)。例如,1053将导致[1,1053,0,1](1053被1和3整除;未被5整除;并给出0除以零的误差)。这在我的这个答案中非常有用,因为1它占据了列表的力量,因为在05AB1E中只有真相,而其他所有东西都是假的。SÖP因此,如果结果为true(1),则表示输入整数可以被其每个数字均分。
  • 看到û(palindromize给定的字符串)后,我很惊讶没有内置的is_palindrome。但是后来我意识到仅需要2个字节即可完成操作ÂQ(在哪里Â是分叉的,这是缩写DR:Duplicate&Reverse copy;Q用于检查堆栈上的前两个值是否相等)。
  • 当您想用多个内容过滤列表时,通常有多个松散的过滤器比将所有过滤器组合成一个便宜。因为当您有两个过滤器时,当您使用两个过滤器时,您将需要一些东西Ds*(复制,交换,乘以充当逻辑与)与(关闭第一个过滤器,再次过滤)。例如:在这个挑战中,我们必须列出所有四位数长的数字,至少包含一个0,并且数字总和等于9。使用范围可以[1000,10000]覆盖四位数的长度,但是接下来还有两个过滤器。最初,我使用了₄4°ŸʒD0åsSO9Q*(14个字节),但是通过使用两个过滤器,可以节省一个字节:₄4°Ÿʒ0å}ʒSO9Q(13个字节)。(后来得到了golfed到₄4°ŸεW°ö9Q由(10个字节)@Grimy
  • 当您想使用整数0作为填充符压缩时,可以使用。但是,与此相关的一个问题是填充0符将变为字符串"0",因此如果您以后尝试使用混合的字符串和整数进行排序,则很可能不会给出您想要的结果。这是一个如何对压缩的内部列表进行排序的示例:0ζ€{。这可以通过添加显式转换为INT(固定ï拉链后),也只有这样的排序:0ζï€{。但是,在zip-filler中使用¾as常量0将导致它在zip期间保持为整数而不是字符串。因此¾ζ€{将在此处保存一个字节。该提示由@ Mr.Xcoder提供,用于在我的这个答案中保存一个字节。
  • 如果要对列表中多个数字的总和,可以使用€SO。但是使用会更短,它会自动向量化。@Grimy提供了此技巧,以在此处保存一个字节在此处保存2个字节)。
  • 如果您只处理非负整数,并且想在过滤器内部检查它是0还是1,则当然可以使用visible 2‹。然而,使用!(阶乘)也只会造成1(truthy)为01,和所有其他值将导致更高的东西(因此falsey,由于仅1是在truthy 05AB1E)。@Grimy提供了此技巧,以在此处保存一个字节

2

自动向量化

请注意,05AB1E中的某些运算符会在数组上自动矢量化。例如,代码5L3+,它反汇编为以下伪代码:

[1, 2, 3, 4, 5] + 3

会成为:

[4, 5, 6, 7, 8]

如果它不能自动矢量化,则也可以使用运算符。它只需要一个字符命令,并在每个元素上执行该(单子)运算符。下面的代码是拆分每个元素的示例(在此处尝试):

€S

普通S运算符会将数组中的每个元素拆分并将其展平为单个数组(在此处尝试)。


如何分配给数组中的第n个元素?
Andrew Savinykh

@AndrewSavinykh现在,没有内置函数,但这是我要实现的东西。
阿德南

@Adnan我找到了一种方法。创建另一个值也要在第n个索引处分配的列表。然后使用ñ之前的n(index)值合并列表。tio.run/nexus/05ab1e#@2/iw2XiE2Tio81ldHjj//8A
mbomb007

@ mbomb007可能的是,唯一的问题是您以后不能修改数组,因为merge命令仅将字符串作为参数(并将列表转换为字符串)。
阿德南

2

输入顺序

输入的顺序可能会对您的代码产生巨大影响,并且,通常,如果您习惯s将堆栈的顶部与堆栈中的第二高位交换,则您没有正确地考虑问题。尝试对输入重新排序,看看是否可以通过提前交换输入,更早地将其添加到堆栈中或复制到某个地方来摆脱交换的需要。最明显的I&O可能是最不成功的05AB1E答案。


2

05AB1E ASCII艺术高尔夫

以下代码有助于使用自定义基本转换将ASCII艺术转换为05AB1E。

|»©ÐÙSDŠ¢øΣθ}R€н¬®sÅ?iD2£RDŠKsì}J©žLR‡®gö₅B®s"•ÿ•“ÿ“ÅвJ"

在线尝试。

这是通过以下方式完成的:

  1. 列出ASCII绘图中的唯一字符。
  2. 按它们在字符串中出现的次数降序(从出现最多的字符到出现最少的字符),对它们进行排序。
  3. 如果ASCII绘图以出现次数最多的字符开头,则将前两项颠倒(以防止在压缩整数中以0开头)。
  4. 按此0-9A-Za-z顺序将输入的字符映射到,每个不同的字符都有自己的映射字符,直到每个字符都被替换为止。
  5. 使用您需要替换的最高基数(基于唯一字符的数量)对基数进行压缩。
  6. 将其再次转换为base-255(用于05AB1E压缩)。
  7. 格式化所有内容,格式为:•<compressed_integer>•“<sorted_distinct_characters>“ÅвJ

让你也压缩串引号"; 在Åв将使用该字符串基转换使用字符串作为定制基所生成的整数; 并将J所有这些字符连接到一个字符串中,该字符串将隐式输出。

接受最多包含62个唯一字符的模式,非常适合ASCII艺术。
唯一字符的数量越少,压缩效果越好。


绘制XNOR数字时序图的示例输出(214字节,9个唯一字符):

    ┌─┐ ┌─┐ ┌─────┐ ┌─┐ ┌─┐ ┌───┐  
A ──┘ └─┘ └─┘     └─┘ └─┘ └─┘   └──
  ┌───┐ ┌───┐ ┌─┐ ┌─────┐   ┌─┐ ┌─┐
B ┘   └─┘   └─┘ └─┘     └───┘ └─┘ └
    ┌─────┐   ┌─┐   ┌─┐   ┌───┐   
X ──┘     └───┘ └───┘ └───┘   └────

将会:

05AB1E,106 个字节

•I£.µ*:]ó±øqaµb₄ΘYQmœ¹µû₄p´ζÂĆ_5ŠKÑ×ðòË|₄#¹¶úôÂ-Í|¯ε¼É₂ïδ&é–9»ÞFò1î×HÃBjý2ĆÉ≠FYÂÂèC j‘£Å₅Œ•“─ └┘┐┌
XBA“ÅвJ

在线尝试。

(106/214)* 100 =原始ASCII字符串的大小的49.53%。

这与我针对 05AB1E(旧版)中提出的挑战的实际提交次数相同。


代码说明:

注意:绝对不要打代码。它是为将ASCII艺术转换为最有效的压缩而迅速编写的,因此它非常丑陋且冗长。

               # Take multi-line input
  ©              # Store it in the register to reuse later                         
ÐÙS              # Only leave unique characters (as list)
   DŠ¢ø          # Map it with the count for each of those characters
       Σθ}R      # Sort it based on that count (highest to lowest)
           €н    # Remove the count again, so the sorted characters remain
¬®sÅ?i           # If the input starts with the most occurring character:
      D2£RDŠKsì} #  Swap the first two characters in the list
J©               # Join everything together, and store it in the register to reuse later
  žLR           # Map each character to [0-9A-Za-z]
      ®gö        # Get the amount of unique characters, and convert it to that Base
         B      # And then convert that to Base-255
®s               # Push the string and swap so the compressed integer is at the top again
  "•ÿ•“ÿ“ÅвJ"    # Insert it in the correct output format
                 #  `•<compressed_integer>•“<sorted_distinct_characters>“ÅвJ`
"•ÿ•"            # (after which the result is output implicitly with trailing newline)

1
顺便说一下,由于05AB1E更改了代码页,因此最大基数从214更改为255
阿德南

1
也许可以为您的答案添加一些内容(或使用其修改生成器),但是如果ASCII艺术作品中使用的字符数少于10个,则可以将其分成两个字节。也就是说,您的生成器给出的是22倍,但是也可以是20倍
凯文·克鲁伊森

@KevinCruijssen,这个想法是我试图传达的,并不是真的声称生成器是好东西:P。老实说,我怀疑它仍然可以在osabie上运行。我是在很久以前写的!
魔术章

@MagicOctopusUrn不确定它是否可以在Elixir重写中运行,但是它肯定仍可以在旧版本中运行。正如Adnan在上面的评论中提到的,我已经将Base-214修改为Base-255大约一年前。除此之外,它效果很好,我已经使用了几次(尽管每次都打高尔夫球。))。字符串和数字的生成效果很好!
凯文·克鲁伊森

这是一个改进的版本。(非常丑陋且写得很快,但是有效)。它将使您的示例从108个字节而不是113 个字节开始。我所做的改进是:将出现率最高的不同字符排在首位(除非出现率最高的是第一个字符,在这种情况下它将交换前两个字符),因此将其压缩整数越小越好;用<str><compr_int><int>вèJ代替你的<compr_int><int>BžLR<str>‡; 而不是使用"字符串引号,因此"可以作为输入的一部分。
凯文·克鲁伊森

1

字符串和整数是相等的类型

不是每个人都同意的东西,但是它起作用。

请考虑以下两个程序:

4 5+
"4""5"+

它们都等于9。这是因为每个值都首先被评估(带有ast.literal_eval)。因此,我们可以在int上执行所有的字符串操作运算符,并在字符串上执行所有int操作运算符。

例如,12345û将数字palindromize 12345,结果为123454321。之后,我们可以对该数字进行常规数学运算。

12345û50000-

这将导致:123404321


0

隐藏的循环和迭代器

05AB1E具有以下常规循环和迭代器:

  • F,它循环访问0 .. n-1
  • G,它迭代1 .. n-1
  • ƒ,它循环访问0 .. n
  • v,它会在每个元素s [0],s [1],..,s [n]上进行迭代。
  • ʒ,这不完全是一个循环,而是一个filter-by命令。我们滥用此命令是因为它无意间遍历了每个元素。

使用这些循环,我们可以得出以下隐藏循环

  • 相反的 gF,你可以使用v它也有一个N可以使用-index。
  • vy -> ʒ更换是需要一些技巧:
    • 您需要立即打印结果。这样可以避免自动打印从堆栈顶部打印。
    • 该代码段在新的临时堆栈上运行。这意味着不能使用依赖于堆栈的代码段。
    • y在此类循环中无法进行调用。

我知道这是一年前发布的,但是不是[µ并且ε是正常循环/迭代的一部分吗?
凯文·克鲁伊森

另外,y现在可以使用其中一些进行调用。
魔术
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.