2
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

第2回 オフラインリアルタイムどう書くの参考問題

オフラインでリアルタイムに「どう書く」をやるイベント第二回の
http://atnd.org/events/30900
atnd を立てた。
で、問題の例を出しておく。難易度と分量はこれを目安に。

二値画像の回転

正方形の二値画像を時計回りに回転する。

画像フォーマットは、x:d のようになっており、x が画像の一辺の長さ(常に正方形)、d は16進表記の画像データ。

例えば、"3:5b8" であれば、3が一辺の長さを表す。
5b8 は 2進数で 0101 1011 1000 となる。
3x3 の画像なので必要なのは 9bit。右端の 3bit を捨ててから三桁ずつに分けて

010
110
111

となる。これが回転前の画像。
これを時計回りに 90度回すと

110
111
100

となる。一列に並べて、16進表記用に末尾に 0 を3つ足すと、

1101 1110 0000

となるので、もとめる答えは "3:de0" となる。
というのが今回のお題。
ただし:

  • : の前にあるのは10進数。
  • 不正な入力への対処は不要。
  • 余ったから捨てる bit はゼロとは限らないが、回転後に末尾に足す bit はゼロ。
  • 少なくとも 9x9 の画像に対処できること。

入力と出力の例

以下、「入力 → 出力」という形式で。(Qiita で表が書けないのが不満…)

  • 3:5b8 → 3:de0
  • 1:8 → 1:8
  • 2:8 → 2:4
  • 2:4 → 2:1
  • 2:1 → 2:2
  • 3:5d0 → 3:5d0
  • 4:1234 → 4:0865
  • 5:22a2a20 → 5:22a2a20
  • 5:1234567 → 5:25b0540
  • 6:123456789 → 6:09cc196a6
  • 7:123456789abcd → 7:f1a206734b258
  • 7:fffffffffffff → 7:ffffffffffff8
  • 7:fdfbf7efdfbf0 → 7:ffffffffffc00
  • 8:123456789abcdef1 → 8:f0ccaaff78665580
  • 9:112233445566778899aab → 9:b23da9011d22daf005d40

ruby と C99 でそのうち解答例を書く予定。

 
 
 
 
 
 

 
 
 
 
 
 

コメントで解答例が出てます。
解答を見たくないかたは要注意。

 
 
 
 
 
 

 
 
 
 
 
 

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
2
Help us understand the problem. What are the problem?