« 2022年9月 | トップページ | 2022年11月 »

2022年10月30日 (日)

文字列のソート

以前、紹介した 2次元配列のソート ですが
文字列の行全体でソートすることができます。
y座標で降順ソートしてみました。

<arry.txt>
ch -50.7 34.7 10.25 0 "123.45
ch -73.3 25.4 10.25 0 "373.28
ch -35.4 47.6 10.25 0 "265.73
ch -46.9 18.3 10.25 0 "758.29
ch -80.9 39.2 10.25 0 "463.18

//2次元配列のソート(テキストファイル)
fs=new ActiveXObject( "Scripting.FileSystemObject" )
w=fs.CreateTextFile("sort.txt")
r=fs.OpenTextFile("arry.txt")
//
arry=[]
i=0
sp=" "
//テキストデータ読込み
while (!r.AtEndOfLine) {
data=r.ReadLine()
//2次元配列に変換
arry[i]=data.split(sp)
i=i+1}
//降順ソート
sort=arry.sort(
function(a,b){
return(Number(b[2])-Number(a[2]))}
)
//sort.txtに書出し(結果確認)
for(i=0;i<=4;i++){
w.WriteLine(sort[i])}
w.Close();r.Close()

<sort.txt>
ch,-35.4,47.6,10.25,0,"265.73
ch,-80.9,39.2,10.25,0,"463.18
ch,-50.7,34.7,10.25,0,"123.45
ch,-73.3,25.4,10.25,0,"373.28
ch,-46.9,18.3,10.25,0,"758.29

| | コメント (0)

2022年10月28日 (金)

平方根

今回も、外部変形ではありません。
テキストデータを読込んで、平方根を書出すスプリクトです。

読込むテキストデータは、
2 3 5 6 7 8 を、1行毎に記述。

スプリクトは、
fso=new ActiveXObject("Scripting.FileSystemObject")
//読込ファイル指定
r=fso.OpenTextFile("sample.txt")
//書出しファイル指定
w=fso.CreateTextFile("calc.txt")
//1行ずつテキスト読込み
while (!r.AtEndOfLine){
line=r.ReadLine()
//平方根の計算
sq=Math.sqrt(line)
//計算結果書出し
w.WriteLine(sq)
}

計算結果は、↓ となります。
1.4142135623731
1.73205080756888
2.23606797749979
2.44948974278318
2.64575131106459
2.82842712474619

| | コメント (0)

2022年10月26日 (水)

1~1000まで

外部変形と関係ありませんが・・・・・
1~1000までの数を全て足すと、
(1+1000)X1000÷2=500500です。

計算するスプリクトを作成すると、
fso=new ActiveXObject("Scripting.FileSystemObject")
w=fso.CreateTextFile("calc.txt")
sum=0
for (i=1;i<=1000;i++){
num=i
sum=sum+num}
w.WriteLine(sum)

テキストエディタにコピペして、拡張子 .jsで保存し、
ダブルクリックで実行すると、
計算結果を、ファイル "calc" に書出しします。

| | コメント (0)

2022年10月19日 (水)

数値集計

指定文字種で作図された数値を集計する外部変形です。
対象文字は横文字、指定文字種以外は除外します。
指定文字種、行間は、ユーザー設定で指定してください。

2022.10.23  数値⇔文字変換時の誤差対策実施

Photo_20221019162201

続きを読む "数値集計"

| | コメント (6)

isNaNメソッド

Numberメソッドは、数値変換できないと、NaNを返します。
但し、NaNには論理式が適用できないので、
エラーメッセージを返す為の処理が必要になります。

isNaNメソッドを使用したユーザー定義関数の例です。
isNaN(n)がTrueの時、"NG"を返します。

function msg(n){
 if(isNaN(n)){
 return "NG"}
 else{
 return "OK"}
 }

| | コメント (0)

2022年10月 9日 (日)

フォント指定文字

フォントをバッチファイル内で指定して文字を作図する外部変形です。
フォントは、ユーザー設定で指定してください。

@if(0==1) //フォント指定文字
@echo off
goto %1
REM #jww
REM #cd
REM #hm|フォントA (L)|フォントB (R)|
REM #:1
REM #:2
REM #0 位置を指示してください (L)free (R)Read
REM #f 文字を入力してください
REM #hr
REM #e
:1
:2
echo chr %2 Err >>jwc_temp.txt
cscript //nologo //e:jscript %0 %1 %2
copy temp.txt jwc_temp.txt
del temp.txt
goto:eof
@end
//コマンドライン引数
arg=WScript.Arguments
sel=arg(0) //フォントA⇒1、フォントB⇒2
//ファイルオープン
fso=new ActiveXObject("Scripting.FileSystemObject")
r=fso.OpenTextFile("jwc_temp.txt")
w=fso.CreateTextFile("temp.txt")
//ユーザー設定
fnt1="<MS 明朝>" //フォントA
fnt2="<HG創英角ポップ体>" //フォントB
//設定
ft="cn\"$"
dq="\""
sp=" "
x=0;y=0
dx=5;dy=0 //水平
//変更フォント指定
if(sel==1){fnt=fnt1}
else{fnt=fnt2}
//jwc_temp.txt"の読込み
while (!r.AtEndOfLine){
line=r.ReadLine()
/////
if(/hq/.test(line)){}
else if(/</.test(line)){
id=ft+fnt
w.WriteLine(id) }
else if(/chr/.test(line)){
ch=line.split(/\s+/)
chr=ch[1]
//文字作図
if(chr=="Err"){
w.WriteLine("h#文字を入力してください")
WScript.Quit(0)}
else{ chr=dq+chr
note=["ch",x,y,dx,dy,chr]
note=note.join(sp)
w.WriteLine(note)}}
else{w.WriteLine(line)}}//while
r.Close();w.Close()

| | コメント (0)

2022年10月 7日 (金)

フォント変更

選択した文字のフォントを、
バッチファイルで指定したフォントに変更する外部変形です。
指定フォントは、ユーザー設定で指定します。
注)指定フォントを変更する場合は、
 jwc_temp.txtに書出されるフォント名で記述してください。

@if(0==1) //フォント変更
@echo off
goto %1
REM #jww
REM #cd
REM #hm|フォントA (L)|フォントB (R)|フォントC (3)|
REM #:1
REM #:2
REM #:3
REM #h3 範囲内の「文字」データのみを選択
REM #hc 範囲選択してください
REM #g1 全レイヤグループ
REM #ht30 寸法図形除外
REM #hr
REM #e
:1
:2
:3
cscript //nologo //e:jscript %0 %1
copy temp.txt jwc_temp.txt
del temp.txt
goto:eof
@end
//コマンドライン引数
arg=WScript.Arguments
sel=arg(0) //フォントA⇒1、フォントB⇒2、フォントC⇒3
//ファイルオープン
fso=new ActiveXObject("Scripting.FileSystemObject")
r=fso.OpenTextFile("jwc_temp.txt")
w=fso.CreateTextFile("temp.txt")
//ユーザー設定
fnt1="<MS 明朝>" //フォントA
fnt2="<MS ゴシック>" //フォントB
fnt3="<HG創英角ポップ体>" //フォントC
//設定
ft="cn\"$"
n=1
//変更フォント指定
if(sel==1){fnt=fnt1}
else if(sel==2){fnt=fnt2}
else{fnt=fnt3}
//jwc_temp.txt"の読込み
while (!r.AtEndOfLine){
line=r.ReadLine()
/////
if(/hq/.test(line)){
w.WriteLine("hd")} //選択図形消去
else if(/</.test(line)){n=n+1
if(n<=2){id=ft+fnt
w.WriteLine(id) } //フォント変更
else{}}
else{w.WriteLine(line)} //再作図
} //while
r.Close();w.Close()

続きを読む "フォント変更"

| | コメント (0)

2022年10月 2日 (日)

文字数(続)

前回 は、jscriptの文字数カウント(全角/半角)の対応方法でしたが、
今回は、gawk3.1.5の対応方法です。

AFさんから、アドバイスしていただいた方法ですが、、
AWKのコマンドラインオプションで  --ctype=ASCII を追加することで
半角/全角の文字数に対応できました。

<バッチファイル例>
echo off
gawk --ctype=ASCII -f count.awk nul>temp.txt
type temp.txt
pause

<awkスプリクト例>
END{
zenkaku="あいうえおABCDEガギグゲゴ"
hankaku="アイウエオカキクケコサシスセソ"
zen=length(zenkaku)
han=length(hankaku)
print "zen=",zen
print "han=",han
}

実行結果
Photo_20221002201201

| | コメント (0)

« 2022年9月 | トップページ | 2022年11月 »