私はでゴルフをするのdc
が好きですdc
が、ビット単位の操作がないために時々イライラしています。
チャレンジ
4つの指定されたCビット演算と同等のものを実装する機能の提供&
、|
、~
および^
(ビット単位のAND、OR、NOT、およびXOR)。各関数~
は、少なくとも32ビットの符号なし整数である2つのオペランドを取ります(1つだけを取ります)。各関数は、オペランドと同じビット幅の符号なし整数を返します。
制限
でサポートされている操作のみを使用できますdc
。これらは:
+
-
*
/
算術加算、減算、乗算、除算~
modulo(または言語がサポートしている場合はdivmod)^
べき乗|
モジュラーべき乗v
平方根>
>=
==
!=
<=
<
標準の等式/不等式演算子>>
<<
ビットシフト演算子。dc
これらはありませんが、2の累乗による除算/乗算の観点から自明に実装されているため、これらを許可します。
制御構造はdc
、(再帰)マクロと(不)平等演算を使用して不器用に構築されます。言語に組み込まれている制御構造を使用できます。
また、論理演算子を &&
||
!
直接使用することはできませんが、論理演算子を使用することもできますdc
。
あなたはビット単位の演算子を使用してはならない &
、|
、~
および^
または自明それらを実装する任意の機能。
さらに、組み込みの文字列のベース変換演算子または関数を使用しないでください。
また、答えの検証に役立つテストプログラムまたはオンラインコンパイラスニペット(ゴルフスコアには含まれていません)の提供を検討してください。