using System.Text;publicstaticclassKata{publicstaticstringTops(string msg){StringBuilder result =newStringBuilder();for(int i =1, x =0; i < msg.Length; i +=5+4* x, x++)
result.Insert(0, msg[i]);return result.ToString();}}
答案2:
using System;using System.Linq;using System.Collections.Generic;publicstaticclassKata{publicstaticstringTops(string msg){int jump =1;
Stack<char> result =newStack<char>(){};for(int i =1; i < msg.Length; i += jump){if(jump %2!=0)
result.Push(msg[i]);
jump +=1;}return String.Join("", result);}}
答案3:
using System;using System.Text;publicstaticclassKata{publicstaticstringTops(string msg){int adder =1;int ithValue =1;bool finshed =false;StringBuilder sb =newStringBuilder();StringBuilder bs =newStringBuilder();if( msg.Length ==0){return"";}while(!finshed){
sb.Append(msg[ithValue]);// get the next "top" value
adder++;
ithValue += adder;
adder++;
ithValue += adder;// dont go again if the next "top" is beyond string lengthif(ithValue >= msg.Length){
finshed =true;}}//flip the string so were high to lowfor(int i = sb.Length -1; i>=0; i--){
bs.Append(sb[i]);}return bs.ToString();}}
答案4:
using System;using System.Collections;publicstaticclassKata{publicstaticstringTops(string msg){// Console.WriteLine("\nStart:\n" + msg);Stack stk =newStack();string res ="";int top =-1;int count =0;for(int i=0; i < msg.Length; i++){if(i ==1){
stk.Push(msg[i]);
count +=2;
top = count *2+1+ i;// Console.WriteLine("Res: " + res + "\tCount: " + count + "\tTop: " + top);}elseif(top == i){
stk.Push(msg[i]);
count +=2;
top = count *2+1+ i;// Console.WriteLine("Res: " + res + "\tCount: " + count + "\tTop: " + top);}}while(stk.Count !=0){
res += stk.Pop();}// Console.WriteLine("\nEnd:\n" + res);return res;}}
using System;using System.Linq;publicstaticclassKata{publicstaticstringTops(string msg){string edges ="";for(int i =1, k =0; i + k < msg.Length; i += k){
edges += msg[i + k];
k++;}string peaks ="";for(int i = edges.Length -1; i >=0; i--)
peaks +=(i %2==0)? edges[i].ToString():"";return peaks;}}
答案7:
using System;using System.Linq;publicstaticclassKata{publicstaticstringTops(string msg){char[] msgarray = msg.ToCharArray();string result="";int k=0;int m=0;for(int i =1; i < msg.Length; i=i+k+m){
m=5;
Console.WriteLine(i);
result=result+msgarray[i];if(i!=1)
k=k+4;}returnstring.Join("",result.Reverse());}}
答案8:
using System;publicstaticclassKata{publicstaticstringTops(string msg){if(msg.Length ==0|| msg.Length ==1)return"";string val ="";for(int i =1; i < msg.Length; i = i +2){try{
val += msg[(i *(i +1))/2];}catch(System.IndexOutOfRangeException){break;}}char[] charArray = val.ToCharArray();
Array.Reverse(charArray);returnnewstring(charArray);}}
答案9:
using System;using System.Linq;publicstaticclassKata{publicstaticstringTops(string msg){if(msg.Length ==0)return msg;string val ="";int increment =1;int index =1;while(true){try{if(increment %2==0){
increment++;
index += increment;}else{
val += msg[index];
increment++;
index += increment;}}catch(System.IndexOutOfRangeException){break;}}char[] arr = val.ToCharArray();return String.Concat(arr.Reverse());}}
答案10:
using System;using System.Linq;publicstaticclassKata{publicstaticstringTops(string msg){char[] c = msg.ToCharArray();string s ="";int p =1;for(int i =1,k=2; i < msg.Length;i= i+p){if(k%2==0)
s += c[i];
p++;
k++;}returnnewstring(s.Reverse().ToArray());}}
串上衣【难度:2级】:答案1:using System.Text;public static class Kata{ public static string Tops(string msg) { StringBuilder result = new StringBuilder(); for(int i = 1, x = 0; i < msg.Le...