2017-12-21 12 views
0

データベースの1つの列に1つの値を格納する方法があるかどうかを確認したいが、読み込み時にデータベースの4つの列として解釈できる。異なるものを意味すると解釈される単一の記憶値

私には四角形があり、四辺があります。どの辺に点線を付けるべきかを示す値を保存したいと思います。この値が読み取られると、左と右の辺が破線で表示されるように、または唯一の辺、またはすべての辺のいずれかと同様に、簡単に解読できます。

私は17種類のオプションを保存することができますが、数字があれば簡単な方法はありますか?インターフェイスに4つのボタンがあり、どこの点を点滅させたいのかを示し、そのように値を格納します。

私はこれをいくつかの擬似コードで格納および再解釈の部分に表示する方法はありますか?

答えて

0

各側面には2つの可能性があり、それぞれの決定は他のものとは独立しているため、数字を掛け合わせると2*2*2*2=16となります。

015の間に整数を格納するだけです。左側の選択肢を得るには、n & 1を計算します。ここで、nは格納された番号です。 (&のシンボルは、多くのコンピュータ言語でビット単位のビットを意味します)。結果は1はダッシュを意味し、0は実数を意味します。右辺を得るには、n & 2を計算し、上はn & 4、下はn & 8です。これらの式の「マジックナンバー」は、2**0,2**1,2**2、および2**3です。

あなたは簡単に他の方法に進むことができます。 0または1のような選択肢がa,b,c,dの場合は、n = 1*a + 2*b + 4*c + 8*dです。前の段落と同じマジックナンバーに注意してください。

バイナリナンバーシステムが分かっている場合は、それらの式が明白です。詳細を知りたい場合は、「バイナリ番号」でWeb検索を行います。もちろん


は、あなたの問題を解決する別の方法は、整数ではなく文字列値を格納することです。たとえば、

"left=dashed, right=solid, top=solid, bottom=dashed" 

を格納した文字列を解析するためにあなたの言語の文字列処理施設を使用することができます。これは私の最初の方法よりも時間がかかり、ストレージにもっと多くのメモリを使いますが、データを調べている人にとっては、より透明でわかりやすいという利点があります。 "1101"のような短い文字列を使用してのコメントで


あなたのアイデアは良いものであり、実装によってはそれも私の最初のソリューションよりも少ないメモリを使用することができます。それは私の最初の解決策と同じ量の情報を示し、私の秒未満です。あなたのアイデアやその他の実装は、言語と、変数の各側の決定をどのように保存するかによって異なります。nが保存された(文字列)値と各辺のための意思決定がある場合はPythonでは、ブール変数a,b,c,dあり、あなたのコードが

a = (n[0] == '1') 
b = (n[1] == '1') 
c = (n[2] == '1') 
d = (n[3] == '1') 

はこれを行うには短いの方法がありますすることができた(True手段が破線は、Falseは固体の意味します) Pythonではないが、Python以外のプログラマにとってはあまり理解できない。

+0

保存と再解釈の疑似コードで私にこれを示す方法はありますか?次のことに苦労する。 –

+0

私はそれがおそらく文字列として格納し、そこから読むのが最も簡単な選択肢だと思います。 「1101」のように、上、右、左を意味します。それを読んで分割し、その文字列の最初の "1"から上端が破線で表示されるかどうかを判断する方法はありますか?私はバイナリをやったので、これは方法でした。 –

関連する問題