2005-05-04 23:11:37

topcoderの道1

テーマ:ブログ

プログラミングをはじめて1年半、誰よりもすごくなってやると思い、いろいろな言語を勉強し、デザインパターン、ネットワークプログラミング、WEBプログラミング、RDBS,XMLなども学習してきた。ある程度の設計もできる自信もついてきた。が、しかし最近すげーものを発見し、ショックをうけた。それは

www.topcoder.com

このサイトでは世界中のやつらがプログラミングの腕を毎週競い合ってる。
制限時間内に与えられた問題のプログラムを一番はやくパーフェクトにできたものが一番という大会である。トップコーダーには賞金もでる。


アルゴリズム大会とソフトウェアデザイン大会の二つがあるのだが、おれはこのアルゴリズム大会にすごくショックをうけた。自分のプログラムがいかにしょぼいかを思い知らされる。


結局、プログラマの腕の見せどころは以下に効率よく、問題を解いていくことなんじゃないかと思いはじめた。

もちろん、プログラムのデザインなどもとても重要なことだとは思う。だが、いくらデザインがよくできていたとしてもそれをコーディングしていくもののスキルがしょぼければ、このアメブロのようなバグだらけのシステムはできてしまう。


このTOPCODERにはすごいやつが世界中からあつまってきている。そして、

このサイトのすごいのは大会が終わった後にはすべての参加者のプログラムを読むことができることだ。
残念ながら問題はすべて英語で出されるから英語ができないと参加することは難しい。

そこでこのブログでは英語なんかできなくても世界でTOPレベルのIT技術を誇る日本のプログラマのひとたちのプログラムを見れるようにできたらと思いつくってみた。

JAVAができるとかC++ができるとかはこのコンペにはほとんど関係ない。求められるのはいかにはやくエレガントなコードをかけるかということだけだ。

おれのようなしょぼい学生プログラマから定年間際の長老プログラマの方、

自分は本当にプログラミングができるのかというのをぜひためしてみてくれ。言語は特に問わないが、できたら、C,C++,JAVAあたりで。

では、今回の問題

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
(難易度 超簡単, 目標時間 10分以内)


与えられた英語の大文字で構成された文字列の中の文字を、与えられた数字の分だけ左にシフトさせなさい。たとえば、’C’を2つ左にシフトさせると’A’、’Z’を2つ左にシフトさせると’X’。
与えられる英語の文字列はAからZで、Aの次はZにシフトさせるものとする。

例1)

"VQREQFGT"
2
Returns: "TOPCODER"

例2)

"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
10
Returns: "QRSTUVWXYZABCDEFGHIJKLMNOP"

例3)

"TOPCODER"
0
Returns: "TOPCODER"

例4)

"LIPPSASVPH"
4
"HELLOWORLD"



クラス名: CCipher
メソッド名: decode
メソッドの引数: String , int
リターン: String
メソッド: String decode(String ciphertest, int shift)

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


では、LET'S START!!
下の方におれのしょぼい解答プログラムをはっておく。 
”おれのがすげーぜ” っていうやつはトラックバックもしくはコメントでどんどんはってくれ。


































public class CCipher {
   public String decode(String chipher, int shift){
      char[] chs = chipher.toCharArray();
      for(int i=0,len=chs.length; i<len; i++){
          for(int j=shift; j>0; j--){
              if (chs[i] == 'A') chs[i] = 'Z';
          else chs[i] = (char)((int)chs[i] - 1);
      }
  }
  return new String(chs);
 }
}
AD
いいね!した人  |  コメント(8)  |  リブログ(0)

programmingさんの読者になろう

ブログの更新情報が受け取れて、アクセスが簡単になります

コメント

[コメントをする]

8 ■無題

MATLAB

char(str-int+((str-int)<65)*26-((str-int)>90)*26)

7 ■pythonで

import string
class CCipher(object):
def decode(self, ciphertest, shift):
return "".join([chr(ord(c)-shift) for c in ciphertest])

6 ■Javaで作ってみました

String shiftAlpha(String s, int n){
char[] str = s.toCharArray();
for(int i = 0; i < str.length; i++)
str[i] = (str[i] + n) % 'A' + 'A';
}
return new String(str);
}

ちょっと適当なのでもうちょっとよくできると思うんですがこんな感じでどうでしょうか。

5 ■セックスフレンド

気軽にセックスを楽しめる!ご近所同士のスキンシップやセックスしたい純粋な願望を満たしてみませんか?写メもあって直接メール送信OK

4 ■アダルト

アダルトサークルをご紹介!素敵なきっかけ探し!アダルト好きな方にはお薦め

3 ■アダルト

アダルトな一時を楽しめる…素敵なアダルトライフを求める女性様より朗報です。

2 ■アダルトな時間には優雅な楽しみがあるのです

アダルト

1 ■無題

#include <iostream>

using namespace std;

class CCipher {
public:
string decode (string chipher, int shift) {
for (int i = 0; i < chipher.size(); i++)
chipher[i] -= chipher[i] - shift < 'A' ? shift - 26 : shift;
return chipher;
}
};

コメント投稿

AD

ブログをはじめる

たくさんの芸能人・有名人が
書いているAmebaブログを
無料で簡単にはじめることができます。

公式トップブロガーへ応募

多くの方にご紹介したいブログを
執筆する方を「公式トップブロガー」
として認定しております。

芸能人・有名人ブログを開設

Amebaブログでは、芸能人・有名人ブログを
ご希望される著名人の方/事務所様を
随時募集しております。