我正在尝试将单词wall转换为它的 ascii 代码列表,(119, 97, 108, 108)
如下所示:
my @ascii="abcdefghijklmnopqrstuvwxyz";
my @tmp;
map { push @tmp, $_.ord if $_.ord == @ascii.comb.any.ord }, "wall".comb;
say @tmp;
Run Code Online (Sandbox Code Playgroud)
有没有办法使用@tmp
而不在单独的行中声明它?
有没有办法在一行而不是 3 行中生成 ascii 代码列表?如果是这样,该怎么做?
请注意,我必须使用@ascii
变量,即我不能使用连续递增的 ascii 序列,(97, 98, 99 ... 122)
因为我也计划将此代码用于非 ascii 语言。
如何在Perl 6中表达双变量双求和序列?
有关双变量双求和序列的示例,请参见此
它必须按原样表示,即在数学上不将双重求和简化为单一求和。谢谢。
我已经搜索了 Raku 文档和几本书和教程以及几篇 Stackoverflow 帖子,以了解如何干净地从列表/数组中删除项目,即没有(Any)代替已删除的元素
my @s = <3 18 4 8 92 14 30>;
my $item = 8;
my $index = @s.first($item, :k);
@s[$index]:delete;
Run Code Online (Sandbox Code Playgroud)
这导致[3 18 4 (Any) 92 14 30],因此我无法对其进行任何操作,例如我无法对其进行应用[+]
。
有没有办法从列表/数组中删除一个项目而没有(Any)?
我写了一个简单的代码:
\nsub euler-ex ($x) of Seq {\n 1, { $x**++$ / [\xc3\x97] 1 .. ++$ } ... Inf }\nsay " 5: " ~ euler-ex(5)[^20] ~ " = " ~ [+](euler-ex(5)[^20]);\n
Run Code Online (Sandbox Code Playgroud)\n输出:
\n5: 1 5 12.5 20.833333 26.041667 26.041667 21.701389 15.500992 9.68812 5.382289 2.6911445 1.22324748 0.50968645 0.19603325 0.07001187499 0.023337291662 0.0072929036444 0.00214497166011 0.000595825461143 0.000156796173985 = 148.41310786833832\n
Run Code Online (Sandbox Code Playgroud)\n如何指定该输出的位数,即来自序列的显式生成器的小数位数?
\n我想在列表中找到相等元素(例如长度为 2)的连续序列
my @s = <1 1 0 2 0 2 1 2 2 2 4 4 3 3>;
say grep {$^a eq $^b}, @s;
# ==> ((1 1) (2 2) (4 4) (3 3))
Run Code Online (Sandbox Code Playgroud)
这段代码看起来不错,但是当在2的序列之后添加另外2 2 2
一个2或从中删除一个2时,它会显示Too few positionals passed; expected 2 arguments but got 1
如何修复它?请注意,我试图在不使用for
循环的情况下找到它们,即我试图尽可能地使用功能代码来找到它们。
可选:在粗体打印部分:
<1 1 0 2 0 2 1
2 2 2 4 4 3 3>
2 2
可以看到多个序列。如何打印它们被看到的次数?喜欢:
((1 1) …
Run Code Online (Sandbox Code Playgroud) 我试图通过计算公式来计算e常数(又名欧拉数)
为了一次性计算阶乘和除法,我写了这个:
my @e = 1, { state $a=1; 1 / ($_ * $a++) } ... *;
say reduce * + * , @e[^10];
Run Code Online (Sandbox Code Playgroud)
但它没有成功。如何正确地做到这一点?
更新:下面添加了更正的代码
我有一个Leanpub 风格的Markdown * 文件,sample.md
我想使用以下命令将其代码块转换为Github 风格的 Markdown风格Raku Regex
Here's a sample **ruby** code, which
prints the elements of an array:
{:lang="ruby"}
['Ian','Rich','Jon'].each {|x| puts x}
Here's a sample **shell** code, which
removes the ending commas and
finds all folders in the current path:
{:lang="shell"}
sed s/,$//g
find . -type d
Run Code Online (Sandbox Code Playgroud)
为了捕获lang
值,例如ruby
从{:lang="ruby"}
并将其转换为
```ruby
Run Code Online (Sandbox Code Playgroud)
我用这个代码
my @in="sample.md".IO.lines;
my @out;
for @in.kv -> $key,$val {
if $val.starts-with("\{:lang") { …
Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的程序,它列出.txt
了给定目录中的所有文件。这个程序在我的 Mac 上完美运行,它有 Rakudo Star 版本 2019.03.1
use File::Find;
my $folder="../Documents";
.say for find dir => $folder, name => /'.txt' $/;
Run Code Online (Sandbox Code Playgroud)
当我尝试在具有 Raku 2020.12.1 的 Windows 7 上运行相同的程序时,它给出了以下信息:
use File::Find;
my $folder="../Documents";
.say for find dir => $folder, name => /'.txt' $/;
Run Code Online (Sandbox Code Playgroud)
我已经将 Raku 更新到 Raku 2021.02.1 版本,并且再次出现相同的错误。我已经通过解压缩rakudo-moar-2021.02.1-01-win-x86_64-msvc.zip
ie安装了它,而没有使用任何安装程序。而关于Mac上的Raku,我不记得安装了File::Find
模块,也不知道如何列出已安装的模块,即我没有检查是否File::Find
安装在Mac或Windows 7上。
如何使该程序在 Windows 7 上运行?
my sub e($r) { printf("%d, ", $_) for 1..$r}
say e(5);
Run Code Online (Sandbox Code Playgroud)
返回1, 2, 3, 4, 5, Nil
,即sub
和/或say
始终在末尾添加Nil。
我第一次尝试使用 rakudo 版本 2020.02。我现在尝试使用最新版本 2020.12.1 并且Nil仍然存在。如何摆脱它?
2020 年 1 月我写了这段代码
\nmy @a = ( 1, { ([+] 1 .. ++$ ) / [\xc3\x97] 1 .. ++$ } ... Inf)[^7];\nsay @a.join(\' + \') ~ "=" ~ [+] @a;\n
Run Code Online (Sandbox Code Playgroud)\n用 Raku 表达以下数学级数:
\n\n该代码工作正常:
\n1 + 1 + 1.5 + 1 + 0.416667 + 0.125 + 0.029167=5.070833\n
Run Code Online (Sandbox Code Playgroud)\n现在我用$
主题变量替换了匿名状态变量$_
,看看它是否工作相同。它没有:
1 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5=4\n
Run Code Online (Sandbox Code Playgroud)\n我希望它能$_
像匿名状态变量一样增加自身$
,但事实并非如此。