[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. var fso = new ActiveXObject('Scripting.FileSystemObject');
  2. var txt = fso.OpenTextFile('1.txt', 1).ReadAll();
  3. var arr = txt.replace(/^(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)(?:\r\n|$)/mg,
  4.     function(s0, s1, s2, s3, s4, s5){
  5.         return 100 + 1*s1 + '' + (200 - s2) + '' + (100 + 1*s3) + '' + (200 - s4) + '' + (100 + 1*s5) + ' ' + s0;
  6.     }
  7. ).split(/\r\n/).sort();
  8. fso.OpenTextFile('2.txt', 2, true).Write(arr.join('\r\n').replace(/^\d+ /mg, ''));
复制代码
1

评分人数

TOP

  1. $Code = @"
  2.     using System;
  3.     using System.Linq;
  4.     using System.Text.RegularExpressions;
  5.     using System.Collections.Generic;
  6.     public static class Program {
  7.         public static IEnumerable<string> Run(string[] lines) {
  8.             var query = from line in lines
  9.                         let m = Regex.Match(line, @"^(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)$")
  10.                         where m.Success == true
  11.                         orderby int.Parse(m.Groups[1].Value), int.Parse(m.Groups[2].Value) descending, int.Parse(m.Groups[3].Value),
  12.                                 int.Parse(m.Groups[4].Value) descending, int.Parse(m.Groups[5].Value)
  13.                         select line;
  14.             return query;
  15.         }
  16.     }
  17. "@;
  18. Add-Type -TypeDefinition $Code;
  19. $arr = [IO.File]::ReadAllLines('1.txt');
  20. [IO.File]::WriteAllLines('2.txt', [Program]::Run($arr));
  21. pause
复制代码
1

评分人数

    • ivor: 结果正确,速度最快技术 + 1

TOP

回复 11# 523066680


    是的,如果非常在意零点几秒速度的话,这个问题用 PowerShell 来解不合适,甚至比不过 js 脚本。
但多一种解题思路总是好的,并且 PowerShell 功能强大,速度也不算慢。关键是用它能方便地解决问题,又是系统自带,我认为这就够了。

TOP

返回列表