我正在寻找一个优雅的解决方案来排序数组,然后用字母替换数值.我有一些工作在这里,但它是一个巨大的if/else怪物,我敢肯定,可以写得更短.
示例代码:
my $values = "70,20,50";
my @singlevalues = sort(split(/,/,$values));
ifmonster();
my $result = "RBG";
Run Code Online (Sandbox Code Playgroud)
$values其中有三个颜色值,其中第一个代表"R",第二个代表"G",最后一个代表"B".我想对这些值进行排序,最后得到一个字符串$result,从字母到最小的排序形式.
因此"70,20,50"导致"RBG",而"20,50,30"导致"GBR".
谢谢
无哈希解决方案:
my @color = split /,/, $value, 3;
my @order = sort { $color[$b] <=> $color[$a] } 0..2;
my $result = join "", qw(R G B)[@order];
Run Code Online (Sandbox Code Playgroud)
该@order列表存储一个排列,后来应用于字母列表.
| 归档时间: |
|
| 查看次数: |
326 次 |
| 最近记录: |