KLab若手エンジニアの これなぁに?

KLab株式会社の若手エンジニアによる技術ブログです。phpやRubyなどの汎用LLやJavaScript/actionScript等のクライアントサイドの内容、MySQL等のデータベース、その他フレームワークまで幅広く面白い情報を発信します。

天下一

天下一プログラマーWEB予選第3回(2009/7/25):3問目

30m × 30m のフロアがあります。
このフロアに、後述する売り場を敷き詰めてください。
ただし、以下の条件を満たしてください。

1) 各売り場区画は矩形をしています。配置するときには
指定されたサイズを90度回転させてもかまいません。
斜めには配置しないでください。

2) 各売り場には売上高が決められています。売り場すべては敷き詰めることが出来ないので、売上高が一番高くなるように敷き詰める売り場を選んでください。
ひとつの売り場を2回以上配置することは出来ません。

敷き詰め方と売り上げを回答してください。
敷き詰め方は下の例と同じフォーマットで回答してください。

売り場一覧::


 名前,大きさ ,売上高
    a,   9x13,   69
    b,   9x24,   24
    c,   23x15,  59
    d,   6x26,   50
    e,   7x9,    80
    f,   16x8,   42
    g,   7x23,   33
    h,   6x17,   67
    i,   11x6,   42
    j,   13x11,  51
    k,   26x14,  31
    l,   13x26,  22
    m,   11x7,   60
    n,   24x10,  76
    o,   7x17,   54
    p,   13x14,  44
    q,   13x22,  61
    r,   13x20,  29
    s,   11x11,  62
    t,   22x11,  48



敷き詰め例::

次のように敷き詰めた場合、選んだ売り場は a, b, f, h, j, m なので、売り上げは 69+24+42+67+51+60 = 342 になります。

_: 空きスペース
a-t: 売り場

aaaaaaaaa_jjjjjjjjjjjbbbbbbbbb
aaaaaaaaa_jjjjjjjjjjjbbbbbbbbb
aaaaaaaaa_jjjjjjjjjjjbbbbbbbbb
aaaaaaaaa_jjjjjjjjjjjbbbbbbbbb
aaaaaaaaa_jjjjjjjjjjjbbbbbbbbb
aaaaaaaaa_jjjjjjjjjjjbbbbbbbbb
aaaaaaaaa_jjjjjjjjjjjbbbbbbbbb
aaaaaaaaa_jjjjjjjjjjjbbbbbbbbb
aaaaaaaaa_jjjjjjjjjjjbbbbbbbbb
aaaaaaaaa_jjjjjjjjjjjbbbbbbbbb
aaaaaaaaa_jjjjjjjjjjjbbbbbbbbb
aaaaaaaaa_jjjjjjjjjjjbbbbbbbbb
aaaaaaaaa_jjjjjjjjjjjbbbbbbbbb
hhhhhh_______________bbbbbbbbb
hhhhhh_______ffffffffbbbbbbbbb
hhhhhh_______ffffffffbbbbbbbbb
hhhhhh_______ffffffffbbbbbbbbb
hhhhhh_______ffffffffbbbbbbbbb
hhhhhh_______ffffffffbbbbbbbbb
hhhhhhmmmmmmmffffffffbbbbbbbbb
hhhhhhmmmmmmmffffffffbbbbbbbbb
hhhhhhmmmmmmmffffffffbbbbbbbbb
hhhhhhmmmmmmmffffffffbbbbbbbbb
hhhhhhmmmmmmmffffffffbbbbbbbbb
hhhhhhmmmmmmmffffffff_________
hhhhhhmmmmmmmffffffff_________
hhhhhhmmmmmmmffffffff_________
hhhhhhmmmmmmmffffffff_________
hhhhhhmmmmmmmffffffff_________
hhhhhhmmmmmmmffffffff_________

天下一プログラマーWEB予選第3回(2009/7/25):2問目

以下の100×100のデータから条件をみたす最も大きい二次元回文を見つけなさい。
 q3_data.txt 

条件1) データは A, B, C, D の4文字から構成されている
条件2) 二次元回文とは例のような時計回り、反時計回りどちらでも同じ文字の
並びになるものをさす
条件3) 二次元の回文は、正方形(縦文字数、横文字数が同じ)になるものを選んでください


例1)

AB
BA

= ABABA

例2)

ABC
B B
CBD

= ABCBDBCBA

例3)

ABCD
B  A
C  B
DABC

= ABCDABCBADCBA

天下一プログラマーWEB予選第3回(2009/7/25):1問目

数字として、 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G を利用する17進数がある。
100万は10進数では 1000000 と表すとき、17進数では BG939 と表す。

さて、1から100 (17進数で 5F) までの間に、'G' という文字は、 G, 1G, 2G, 3G, 4G のように5つ出現する。また、例えば G1G では2回 'G' が出現しているとする。

ここで 1 から 100万までの数値を17進数で表現したとき、数字 'G' は合計何回出現するか?

天下一プログラマーWEB予選第2回(2009/7/15):3問目

以下の6種類のパイプが書かれたパネルがある。

□:0
┗:1
┏:2
┓:3
┛:4
┃:5
━:6

このパネルが以下のように 4×4 の升目に敷き詰められている。


1 2 3 4
   ↓
┗┓┏┛ a
┗┓┃━ b
┏━┃┃ c
┏━┛□ d
↓   

いまは右上隅から左下隅までパイプが連接している。

ここで、□のパネルだけが上下左右の隣接するパネルと場所を交換できる。
この操作によって、以下のように左上隅から右下隅に連接し直す場合、
最短で何回の交換でできるか答えてください。

1 2 3 4
↓   
???? a
???? b
???? c
???? d
  ↓

※条件)
左上隅のパネル(1a)は、上に向かうパネル(┃か┗)でなければならない。
同様に右下隅のパネル(4d)は下に向かうパネル(┃か┓)でなければならない



例) 4×3のパネル移動

(問題)
================
1 2 3 4
   ↓
┗┃━┃a
┏━━┛b
┃┃┓□c
↓
================


(例解)

¶1. (3cと交換)
================
1 2 3 4
↓
┗┃━┃a
┏━━┛b
┃┃□┓c
   ↓
================

¶2. (2cと交換)
================
1 2 3 4
↓
┗┃━┃a
┏━━┛b
┃□┃┓c
   ↓
================

¶3. (1cと交換)
================
1 2 3 4
↓
┗┃━┃a
┏━━┛b
□┃┃┓c
   ↓
================

¶4. (1bと交換)
================
1 2 3 4
↓
┗┃━┃a
□━━┛b
┏┃┃┓c
   ↓
================

¶5. (1aと交換)
================
1 2 3 4
↓
□┃━┃a
┗━━┛b
┏┃┃┓c
   ↓
================

¶7. (2aと交換)
================
1 2 3 4
↓
┃□━┃a
┗━━┛b
┏┃┃┓c
   ↓
================

¶8. (3aと交換)
================
1 2 3 4
↓
┃━□┃a
┗━━┛b
┏┃┃┓c
   ↓
================

¶8. (4aと交換)
================
1 2 3 4
↓
┃━┃□a
┗━━┛b
┏┃┃┓c
   ↓
================

¶9. (4bと交換)
================
1 2 3 4
↓
┃━┃┛a
┗━━□b
┏┃┃┓c
   ↓
================

¶10. (4cと交換)
================
1 2 3 4
↓
┃━┃┛a
┗━━┓b
┏┃┃□c
   ↓
================

¶11. (3cと交換)
================
1 2 3 4
↓
┃━┃┛a
┗━━┓b
┏┃□┃c
   ↓
================

※連接し直し完了(11回)

天下一プログラマーWEB予選第2回(2009/7/15):2問目

以下の条件を満たす、20 未満の素数と加減乗除および括弧を使って、等式が何個あるか答えてください。

※条件1)
素数は数式内で1つだけしか使えません

※条件2)
数字の並びは変更できません

※条件3)
加減乗除は何回やってもOKです

※条件4)
乗算、除算は加算、減算より優先されます。
それ以外は先に出たものから演算されます

例)
2 + 5 = 7
5 + 23 = 29

(20未満の素数)
[ 2, 3, 5, 7, 11, 13, 17, 19 ]
 KLab若手エンジニアブログのフッター