忍者ブログ
mirac cafe という名の不思議なブログ

※ ブログ等での私の投稿は個人の見解によるものであり、 所属する組織の見解ではありません。
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

なんかプログラミング好きな人たちの間で、

makeplexさんの出された問題がはやっていたので、解いてみました。

頑張って解いたのですが、

何の変哲もないプログラムになってしまい寂しかったので、

ショートコーディング(プログラムを可能な限り短くする遊び)をやってみました。

600文字を切ったのでとりあえず満足。

多分ショートコーディングのプロとかがやれば

300文字ぐらいになるのでしょうが、

自分は適当に妥協することにしますw

ソースを貼っておきますが、

ネタバレにならないように色を青っぽくしておきます。

見たい人は選択して色反転させるなりして見てくださいね。


仕様:

入力は複数のデータセットを含み、各データセットは昇順13個の1-9なる数。

出力はmakeplexさんのものの通り。出力順序の入れ替わりは可とする。

Sample Input:

1112224588899
1122335556799
1112223335559
1223344888999
1112345678999

Sample Output:

1112224588899
(111)(222)(888)(99)[45]

1122335556799
(123)(123)(567)(99)[55]
(123)(123)(567)(55)[99]
(123)(123)(555)(99)[67]

1112223335559
(123)(123)(123)(555)[9]
(111)(222)(333)(555)[9]

1223344888999
(234)(234)(888)(999)[1]
(123)(234)(888)(999)[4]
(123)(44)(888)(999)[23]

1112345678999
(123)(456)(789)(99)[11]
(123)(11)(456)(789)[99]
(123)(11)(456)(999)[78]
(123)(11)(678)(999)[45]
(11)(345)(678)(999)[12]
(111)(345)(678)(999)[2]
(111)(234)(678)(999)[5]
(111)(234)(567)(999)[8]
(111)(234)(567)(99)[89]
(111)(234)(789)(99)[56]
(111)(456)(789)(99)[23]

ソースコード:

#define L(c)(f==13-c||b[f]!=b[f+c])
a[5];char b[14];F(int u,int n,int t,int w){int i,k,s,f=0;if(u==8191){for(i=5;i--;){putchar(i?'(':'[');for(k=0;k<13;k++)if(a[i]&1<<k)putchar(b[k]);putchar(i?')':']');}return puts("");}while(u>>f&1)f++;if(!t&&!w&&L(1)){a[0]=1<<f;F(u|a[0],n,1,1);}for(s=2;s--;){for(i=f;++i<13;)if(!(u&1<<i)&&b[f]+s==b[i]){for(k=i;++k<13;)if(!(u&1<<k)&&b[f]+s+s==b[k]&&(s||L(3))){a[n]=1<<f|1<<i|1<<k;F(u|a[n],n-1,t,w);break;}if(!w&&(s||L(2)))a[0]=1<<f|1<<i,F(u|a[0],n,t,1);if(!s&&!t&&L(2))a[n]=3<<f,F(u|a[n],n-1,1,w);break;}}}main(){for(;~scanf("%s",b);puts(""))puts(b),F(0,4,0,0);}


PR
この記事にコメントする
お名前
タイトル
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
フリーエリア
最新コメント
[11/30 kamae]
[04/30 mirac]
[04/29 渚]
[01/20 渚]
[01/01 mirac]
[12/09 mirac]
[10/31 mirac]
[03/14 mirac]
[08/10 404ななしさん]
[08/09 halwhite]
最新記事
最新トラックバック
ブログ内検索
忍者ブログ [PR]