前言其实这篇文章的目的不是解决这两个问题,而是深入Node.js基础模块readline的使用。纸牌在生活中很常见,现在我们需要编写一个程序来模拟洗牌的过程。现在需要洗2n张牌,从上到下分别是第一张牌、第二张牌、第三张牌,直到第2n张牌。首先,我们将2n张牌分成两堆,左手拿着第1到第n张牌(上半堆),右手拿着第n+1到2n张牌(下半堆)。然后开始洗牌的过程,先放下右手的最后一张牌,再放下左手的最后一张牌,再放下右手的倒数第二张牌,再放下左手的倒数第二张牌,直到终于放下了左手的第一张牌。然后把卡片放在一起。比如有6张牌,初始牌的顺序是1、2、3、4、5、6。先分成两组,左手拿着1、2、3;4,5,6在右手。6,3,5,2,4,1在洗牌过程中按顺序放下。将这六张牌重新组合成一套牌后,我们按从上到下的顺序看这套牌,就变成了顺序1、4、2、5、3、6。现在给定一副原始牌组,请将这副牌洗k次后从上到下输出序列。输入说明:第一行是一个数字K(K≤100),表示洗牌的次数。第二行输入第一张牌的序列(数字之间用空格隔开,并且是2的倍数)输出说明:输出一行表示最终的序列。用空格分隔数字,不要在行尾输出多余的空格。代码:varreadline=require('readline');//引入readline模块constrl=readline.createInterface({input:process.stdin,output:process.stdout,terminal:false});varbool=-1;//初始状态为负数,表示还没有开始读取varans=0;varsequence;varresult=[];rl.on('line',function(line){if(bool<0){bool=parseInt(line.trim());}else{sequence=line.split("").map(function(index){returnparseInt(index);})ans=sequence.length;while(bool!=0){varLeftList=sequence.slice(0,ans/2).reverse();varRightList=sequence.slice(ans/2,ans).reverse();for(vari=0;i
