論理演算とブール数

論理演算と0,1の指標作成

用法APL結果と例(単項) 用法結果と例(両項)
*
Signum
符号
* Y
\[\times \] 実数に対しては、正には1、0には0、負には_1を付与。
    * _5 0 4         
 _1 0 1 
  
複素数では大きさと偏角を与える
  
    * 3j4          
 0.6j0.8           
  
    *. 3j4          
 5 0.927295         
  
    *. 0.6j0.8        
 1 0.927295         
複素数に対しては、大きさが1で、同じ偏角の複素数
Times
乗算
X * Y
(Halve)
-:
Match
一致
X -: Y
左引数と右引数とがマッチ していれば1、そうでなけ れば0
   1 2 3 -: 1 2 3
1

 y;(y=y);y -: y=. i.3 3
+-----+-----+-+
|0 1 2|1 1 1|1|
|3 4 5|1 1 1| |
|6 7 8|1 1 1| |

+-----+-----+-+
   'japan' -: 'japan'
1

'japan as '-:'japan is'
0

文字列は文ベースで一致
~.

(副詞)
Nub
重複排除
Yの重複要素を排除
    ~. 1 1 2 2 3 3      
 1 2 3            

   ~. 'japan'
japn
無し
~:

Nubsieve
重複指示
~: 
重複している合は重複の最初の箇所を1で示す。
(2度目は0)重複していない場合も1であり、オリジナル か重複かを表示
     ~:1 1 2 2 3 3     
 1 0 1 0 1 0         
 
   ~: 'japan'
1 1 1 0 1

 ~: s:'山田';'田中';'山本';'田中';'山田'
1 1 1 0 0
Not-equal
不等
X ~: Y
XとYが等しければ0、
そうでなければ1
  20 30 40 ~: 40 30 20  
 1 0 1           
   
   'japan' ~: 'jappn'
0 0 0 1 0

文字ベース
=
Self Classify
自己分類
= Y
. 重複を分類して判別し、1で 重複、0で非重複を表示する
   = 'aabbccaadd'
a |1 1 0 0 0 0 1 1 0 0
b |0 0 1 1 0 0 0 0 0 0
c |0 0 0 0 1 1 0 0 0 0
d |0 0 0 0 0 0 0 0 1 1
   
   a=.3 3$'abcdefghi'    
  
  (=a); a
+-----+---+
|1 0 0|abc|
|0 1 0|def|
|0 0 1|ghi|
+-----+---+
マトリクスは行ベースで照合
    = i.3          
 1 0 0            
 0 1 0            
 0 0 1            
3 3 $ の単位行列を生成
Equal
等しい
X = Y
XとYが等しければ1、
そうでなければ0
20 30 40 = 40 30 20  
0 1 0     
   
   (i.3 3 )=i.3 3
1 1 1
1 1 1
1 1 1

マトリクスはスカラベースで照合

a=: 3 3 $ 'abcdefghi'

a=a
1 1 1
1 1 1
1 1 1

文字ベース
E.
無し
Memder-of Interval
パターンの 所属
X E.Y
右引数の中に左引数(パターン) の先頭の位置に1を返す。そう でなければ0を返す。
   2 3 E. 1 2 3 5 2 3 5
0 1 0 0 1 0 0

patarn 2 3の始まる位置

   2 3 4 E. 1 2 3 5 2 3 5
0 0 0 0 0 0 0

patarn 2 3 4はない 

'co' E. 'cocoa'    
1 0 1 0 0         
ワードベースであり、mがキーワード
e.
Raze (in)
部分所属
e. Y
Yの各要素を照合して ブール数で表示する。
(e.i.5);   e. 'japan'
 +---------+---------+
0|1 0 0 0 0|1 0 0 0 0|j
1|0 1 0 0 0|0 1 0 1 0|a
2|0 0 1 0 0|0 0 1 0 0|p
3|0 0 0 1 0|0 1 0 1 0|a
4|0 0 0 0 1|0 0 0 0 1|n
 +---------+---------+
 0 1 2 3 4  j a p a n
Member(in)
要素の所属
X e. Y
左引数の要素が右引数の中 に含まれていれば1、
そう でなければ0を返す
8 7 6 7 9 e. 7 8 9 7  
1 1 0 1 1   
 
 'japan korea' e. 'japan'
1 1 1 1 1 0 0 0 0 0 1

文字ベースで照合
i.
(Integ ers)
\[\iota \]
   (i. >./)9 8 7 6 7 9
0

最大値の最初の位置
Index of First
インデクス
X i.Y
左引数の要素の右引数にお ける最初の位置を返す。
7 8 9 7 i. 8 7 6 7 9  
1 0 4 0 2         
  
   'abcd' i. 'a bird'
0 4 1 4 4 3
a   b i r d
i:
 (i:>./) 9 8 7 6 7 9
5

最大値の最後の位置
Index of Last
インデクス
X i: Y
左引数の要素の右引数にお ける最後の位置を返す。
7 8 9 7 i: 8 7 6 7 9  
1 3 4 3 2         
   'japan' i. 'japan'
0 1 2 1 4
aは1番目
   'japan' i: 'japan'
0 3 2 3 4
aの後ろの位置 3
I.
Indices
指標
I. Y
指標1の箇所の(i.# A)の数字(アドレス)を示す
  A=:   0 0 1 0 1 0 1 1
   I. A
2 4 6 7
   A,: i.8
0 0 1 0 1 0 1 1
0 1 2 3 4 5 6 7
Interval- Index
X I. Y
左引数で示した昇順または降順に 右引数を配置する順を示す
   2 5 6 I. 10 3 5 7 8 9
3 1 1 3 3 3

(応用)
    (/:~ Y),:~ Y=. ?. 7$20
6 15 19 12 14 19  0
0  6 12 14 15 19 19 NB.sort

   19 ([: I. =) ?.7$20
2 5
19の位置

12より大きい数の位置を示す

 12 I.@:<  ?. 10$20
1 2 4 5 7 9
<
(Box)
< Y
   


Less-than
X < Y
左引数が右引数より小さけ1、そうでなければ0
    20 30 40 < 40 30 20  
1 0 0           
>
(Open)
> Y
>
   >\2 3 4
2 0 0
2 3 0
2 3 4
Larger- than
大きい
X > Y
左引数が右引数より大きけ れば1、
そうでなければ0
20 30 40 > 40 30 20  
0 0 1           
<:
Decrement
\[ \le \] \[ \leq \] (<:) Y-1
Not(-.) 1-Y
<:
Lesser or equal
小さいか 等しい
X <: Y
左引数が右引数より小さい か等しければ1
そうでな ければ0
20 30 40 <: 40 30 20  
1 1 0           
Increment
>:
\[\geq \] Increment \[Y+1 \] >:
Larger or equal
大きいか 等しい
X >: Y
左引数が右引数より大きい か等しければ1
そうでな ければ0
20 30 40 >: 40 30 20  
0 1 1           

ブール代数

用法APL結果と例(単項) 用法結果と例(両項)
*.
Length /Angle
論理積
And
最小公倍数
LCM
X *. Y
左右の引数が共に1のとき に1
そうでなければ0
0 0 1 1 *. 0 1 0 1   
0 0 0 1          
XとYの最小公倍数
24 *. 60        
120
ブール代数で文字列は演算できない
+.
Real /Imagin ary
Or
論理和
GCD
最大公約数
X +. Y
左右の引数が共に0のとき に0、そうでなければ1
0 0 1 1 +. 0 1 0 1   
0 1 1 1          
XとYの最大公約数
24 +. 60        
12
*:
Square
Not-And
否定論理積
X *: Y
左右の引数が共に1のとき に0、そうでなければ1
0 0 1 1 *: 0 1 0 1   
1 1 1 0          
+:
Double
Not-Or
否定論理和
X +: Y
左右の引数が共に0のとき に1、そうでなければ0
0 0 1 1 +: 0 1 0 1   
1 0 0 0          
= =
XNOR
左右の引数が同じとき に1、異なければ0 XNOR(eXclusive NOR)
   0 0 1 1 = 0 1 0 1
1 0 0 1

   'JAPLA'='JPALA'
1 0 0 1 1
-.
Not
否定 /補数
-. Y
右引数が0なら1、1なら0
    -. 1 0          
 0 1             

   -. 0.6 0.7
0.4 0.3
補数
Less
X -.Y
左の引数から右引数の要素 を除いたものを出力する
(i.5) -. 1 3      
0 2 4           

(i.5)(-.@e.#[)1 3   
0 2 4           

   'JAPLA' -.'JP'
ALA

(Remove Items)

基底と2進、n進の計算

用法APL結果と例(単項) 用法結果と例(両項)
#.
Base-2
2進数
#. Y
2進数で与えた右引数を 10進数に変換する
    #. 1 1 1 1        
15
    
    2 #. 1 1 1 1       
15
Base
10進化
左引数を底(10進)とする加重合計値
10 #. 1 2 3      
123

60 #. 1 30 20     
5420 (1時間30分20秒の秒数) 

(2;4;8;16) #./(L:0) 4 5 6
+--+--+---+----+
|32|90|302|1110|10進の値
+--+--+---+----+
 2  4   8   16  進数
32 \[(4 \times 2^{2})+(5 \times 2)+6=32 \] \[(4 \times 8^{2})+(5 \times 8)+6=302 \]
#:
Antibase 2
10進数の 2進化
#: Y
10進数で与えた右引数を 2進数に変換する
    #: i.8          
 0 0 0 ‥‥‥ 0       
 0 0 1 ‥‥‥ 1       
 0 1 0 ‥‥‥ 2       
 0 1 1 ‥‥‥ 3       
 1 0 0 ‥‥‥ 4       
 1 0 1 ‥‥‥ 5       
 1 1 0 ‥‥‥ 6       
 1 1 1 ‥‥‥ 7       
Antibase
n進化
X \#: Y
10進数で与えた右引数を 左引数の底による進数で表示
24 60 60 #: 5420    
1 30 20          
(秒の時間/分/秒へ変換)
 
4 4 #: i.6       
0 0            
0 1            
0 2            
0 3            
1 0            
1 1            
(4進数表示)       
b.
(副詞)
Basic Characteristic

u b.n
  • u b.0はランクを表示する
        * b.0          
     0 0 0            
    
  • u b._1 は逆関数を表示する
        *: b._1         
     %:             
     
  • u b.1は Jのマクロ定義の内側を表示する(全てではない)
        ^ b.1 NB. e          
     $&1@(}.@$)         
    
Boolean
ブール数
ビットワイズ演算
X b. Y
ブール数での演算。 
   
   (0 1 *./ 0 1);0 1 +:/ 0 1
+---+---+
|0 0|1 0|
|0 1|0 0|
+---+---+

 <("2) |: 0 1 (1 8 b./) 0 1
+---+---+
|0 0|1 0|
|0 1|0 0|
+---+---+
引数は(0-15),(_16-_1),(16-34)が割り付けられており、 プリミティブの代わりに引数とb.でbitwise演算ができる \[ \begin{array}{cc|cc} 1 &*&6&~:\\. 8 &+:&9& =\\ 12&-.&14&*:\\ \end{array} \]
20 b./~ table i.5 
NB. bitwise less than(<)
+-------+---------+
|20 b./~|0 1 2 3 4|
+-------+---------+
|0      |0 1 2 3 4|
|1      |0 0 2 2 4|
|2      |0 1 0 1 4|
|3      |0 0 0 0 4|
|4      |0 1 2 3 0|
+-------+---------+
Vocabraly参照