给定一个实数,将其转换为列表列表,其中负号(如果有)变为空列表,整数部分变为数字列表,而小数部分(如果有)变为数字列表。这些数字必须是实际数字,而不是字符串。
例子
0
→ [[0]]
123
→ [[1,2,3]]
-123
→ [[],[1,2,3]]
123.45
→ [[1,2,3],[4,5]]
0.45
→ [[0],[4,5]]
-0.45
→ [[],[0],[4,5]]
-123.45
→ [[],[1,2,3],[4,5]]
给定一个实数,将其转换为列表列表,其中负号(如果有)变为空列表,整数部分变为数字列表,而小数部分(如果有)变为数字列表。这些数字必须是实际数字,而不是字符串。
0
→ [[0]]
123
→ [[1,2,3]]
-123
→ [[],[1,2,3]]
123.45
→ [[1,2,3],[4,5]]
0.45
→ [[0],[4,5]]
-0.45
→ [[],[0],[4,5]]
-123.45
→ [[],[1,2,3],[4,5]]
Answers:
IEnumerable<char[]>
)只是打印代码没有将它们添加到其中
将输入作为字符串。挑战规范更新后,牺牲了11个10字节,将输出中的元素转换为数字。
s=>s.split(/\D/).map(a=>[...a].map(eval))
eval
。console.log((
s=>s.split(/\D/).map(a=>[...a].map(eval))
)("-123.45"))
s=>
匿名函数,通过参数将字符串作为参数s
。"-123.45"
s.split(/\D/)
使用RegEx将字符串拆分为所有非数字字符上的数组-即,-
和.
["","123","45"]
.map(a=>)
映射到数组,并通过parameter将每个字符串传递给函数a
。
[...a]
拆分为单个字符串数组。[[],["1","2","3"],["4","5"]]
.map(eval)
映射子数组和eval
每个字符串,将其转换为整数。[[],[1,2,3],[4,5]]
ŒṘµ<”/œpV€
单数链接,获取数字并返回数字列表的结果列表。
在线尝试!(页脚仅打印python表示形式以显示所有实际列表)
...或查看测试套件。
ŒṘµ<”/œpV€ - Link: number
ŒṘ - Python representation (yields a string representation of the number)
µ - monadic chain separation (call that s)
”/ - literal '/' character
< - less than? (vectorises) ('.' and '-' are, digit characters are not)
œp - partition s at truthy indexes of the resulting list discarding the borders
V€ - evaluate €ach (list of characters) as Jelly code (vectorises)
感谢Riley节省了一个字节。码:
'-'.:'.¡εSï
使用05AB1E编码。在线尝试!
说明:
'-'.: # Replace "-" by "."
'.¡ # Split on "."
ε # Apply to each element..
S # Split into a list of characters
ï # Convert back to int
ï
吗?
The digits must be actual numbers, not strings.
„-.S€¡
对于6,但是如果他们必须是整数……不确定。
lambda a:[[]]*(a<0)+[map(int,n)for n in`abs(a)`.split('.')]
Felipe Nardi Batista的-5字节
[[[1, 2, 3], [4, 5]]]
有一个额外的外部列表
map
使用列表理解来更改外部,则可以获取59个字节:链接
'.@;)A$s⌠♂≈⌡M[[]]+@s~@t
说明:
'.@;)A$s⌠♂≈⌡M[[]]+@s~@t
'. push "."
@;) make a copy of the input and move it to the bottom of the stack
A$s absolute value of input, stringify, split on periods
⌠♂≈⌡M convert integer and fractional parts to lists of digits
[[]]+ prepend an empty list
@s~ bitwise negation of sign of input (1 -> -2, 0 -> -1, -1 -> 0)
@t elements in the list starting at that 0-based index (drops the leading empty list if the input was positive)
Ζ-.ŗ .Θ⌡č¹r
输出到堆栈的顶部(因为SOGL将其转换为多行字符串,因为它是为ascii-art设计的)。要查看结果,请在控制台中查看`r`@10:
(后方括号为堆栈数组),或仅οø∑
在代码后附加
Ζ-.ŗ replace "-" with "."
.Θ split on "."s
⌡ for each
č chop into characters (casts to strings :/)
¹ wrap in array (this + for each is like map())
r reverse types, vectorizing
将输入作为字符串。
q\D ®¬®n
测试它(-Q
仅出于可视化目的标记。)
字符串的隐式输入U
。
q\D
使用RegEx将(q
)拆分为所有非数字字符上的数组。
®
映射到数组。
¬
将每个字符串拆分为单个字符的数组。
®
映射到数组。
n
转换为整数。
\D
,因为唯一的非数字是.
和-
?
/
s :-)
/
通过多行省略结尾。我从未考虑过尝试将它们都忽略掉。
@(x)cellfun(@(c){c-48},strsplit(num2str(x),{'-' '.'}))
接受数字作为输入并产生数字矢量单元格数组的匿名函数。
@(x)cellfun(@(c){c-48},strsplit(num2str(x),{'-' '.'}))
@(x) % Function with input x
num2str(x) % Convert x to string
strsplit( ,{'-' '.'}) % Split at '-' or '.'. Gives a
% cell array of substrings
cellfun( , ) % To each substring apply
% the following function
@(c){c-48} % Subtract 48 from each char
% and pack into a cell
0.45
返回[[],[4,5]
而不是[[0],[4,5]]
(与碰撞-45
)
Ṿ
!修复...确定。谁会期望Jelly分别解析0
和.45
的0.45
...并且也将其作为Ṿ
输出。
$'.'-(Æ'.@s⌠♂≈⌡M
说明:
$'.'-(Æ'.@s⌠♂≈⌡M Implicit eval'd input
$ Convert to str
'. Push '.'
'- Push '-'
( Rotate stack left
Æ Pop a, b, c; push c.replace(b, a)
'. Push '.'
@ Pop a, b; push b, a (swap)
⌠♂≈⌡ Push function ♂≈
♂ Map
≈ Convert to int
M Map
x=RG::s(strtoi(s(gsub('-','.',scan()),on='\\.')))
x[is.na(x)]=list(NULL)
我爱RG
图书馆。
必须添加26个字节以确保空列表实际上是空的。
gsub('-','.',scan()) # replace - with . in input; also converts to string
s( ,on='\\.') # split string on '.'
strtoi( ) # convert to numeric
RG::s( ) # convert to lists of digits
x[is.na(x)]=list(NULL) # converts list of `NA` to empty list
输出示例:
> x=RG::s(strtoi(s(gsub('-','.',-123.45),on='\\.')))
> x[is.na(x)]=list(NULL)
> x
[[1]]
NULL
[[2]]
[1] 1 2 3
[[3]]
[1] 4 5
numeric(0)
一个空的数字列表或list()
或NULL
?
NULL
但是现在我确定有一种高尔夫球手的方法可以做到。也许我会回到它。
$_="[[$_]]";s/\D\K\./0./;s/\d(?=\d)/$&,/g;s/-|\./],[/g
由于Dom提醒我有关$&的信息,节省了两个字节
说明:
$_="[[$_]]"; # Add opening and closing to ends of strings
s/\D\K\./0./; # handle the case of .45 or -.45 by inserting 0 before
# the decimal. Otherwise, .45 & 45 would be ambiguous.
s/\d(?=\d)/$&,/g; # Put a comma between numbers.
s/-|\./],[/g # Turn - and . into separators between lists
+«*.split(/\D/)».comb
+«\ # numify each of the following (possibly in parallel)
*\ # WhateverCode lambda (this is the input)
.split(/\D/)\ # split on non-digits ( . and - )
».comb # split each of those into individual characters
请注意,…».comb
该优先级高于+«…
{m:g/^\d*|\d+/».comb}
返回列表中的元素是字符串,但与Perl一样,它们可以用作数字,并将被隐式转换。它们是用于所有实际目的的“实际数字”。为了使它们成为最直接表示的数字,只需要在代码块的内容前加上“ +«”前缀再加上三个字节。
+«
应该包含在内。