J 从文件中读入大量的扩展整数

J read in a large number from file as extended integer

在最近的 google codejam 比赛中,我需要(从文本文件)将一个大整数读入 J。我试过

in =: ".&.><;._2 (1!:1) < 'filename.in'

然而 ". 将一些大整数转换为浮点数。

datatype ". '123456789'
integer

datatype ". '12345678901234567890'
floating

我不确定 "floating" 是否会丢失有效数字。 J中有扩展整数支持。如何将一串数字转换为扩展整数?

您可以通过在使用 ".

之前将 'x' 附加到您的字符串来做到这一点
      12345678901234567890x NB. usual way to create extended type
   12345678901234567890
       datatype  12345678901234567890x
    extended
       ". '12345678901234567890','x' NB. the appended x allows ". to create extended type
    12345678901234567890
       datatype ". '12345678901234567890','x'
    extended

我发现唯一可行的方法是在读取文件后立即追加 'x',如鲍勃所说:

 <@('x'&(,~));._2 (1!:1) < filename