fc2ブログ
GEEKy Script Writer [perl and more!]
You should permit the JavaScript!!
【一行コード】CとPerlで標準入力からの英字の大文字と小文字を入れ替え
またもやmixiネタ

入力 getchar
出力 putchar
大文字と小文字を逆転するプログラムを書く。


書いた人大学生らしいけど、こんなのもわからんのかと怒る前に今回はCとPerlで書いてみよう
それも中軸の処理は一行で

まずはPerl

map{if($_<91 && $_>64){$_+=32;}elsif($_<123 && $_>96){$_-=32;}printf("%c",$_);}unpack('C*',<>);

んー、まぁこんなもんでしょ
んじゃ次はC

#include <stdio.h>
int main() {
char c;
while(c=getchar()) putchar(c > '@' && c < '[' ? c+32 : c > '`' && c < '{' ? c-32 : c);
return 0;
}

ちょっと無理やりかな?

追記
Perlでもっと短いのでけた

map{printf("%c",(0..64,97..122,91..96,65..90,123..255)[$_]);}unpack('C*',<>);

うーんトリッキー

追記2
更に短く

map{print chr((0..64,97..122,91..96,65..90,123..255)[$_]);}unpack('C*',<>);

もうここまでくると何の処理だかわからんね

追記3
泣きたくなるほどに短いやつ

while(<>){tr/a-zA-Z/A-Za-z/;print;}

そうか、これでよかったんだ

テーマ:プログラミング - ジャンル:コンピュータ

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
copyright © 2005 GEEKy Script Writer [perl and more!] all rights reserved.
Powered by FC2ブログ.