「言語処理100本ノック」の第1章-00をAutoitでやってみる

スポンサーリンク

00. 文字列の逆順

MsgBox("","",StringReverse("日本に帰るぞ"))

結果:

Autoitの最新バージョン(v3.3.14.5)には「StringReverse」含まれています。

マニュアル参考サイト:   Function StringReverse

 

01.「パタトクカシーー」

「パタトクカシーー」という文字列の1,3,5,7文字目を取り出して連結した文字列を得る

$target = "パタトクカシーー"
$aArray = StringSplit($target,"")
Local $arr[4] = [1,3,5,7]
Local $ans = ""

For $count In $arr
    $ans &= $aArray[$count]
Next
MsgBox("","",$ans)

文字列を一文字ずつ分割し、配列に入れ取り出します。

 

 

02. 「パトカー」+「タクシー」=「パタトクカシーー」

「パトカー」+「タクシー」の文字を先頭から交互に連結して文字列「パタトクカシーー」を得よ.

$targetA = "パトカー"
$targetB = "タクシー"

$aArrayA = StringSplit($targetA,"")
$aArrayB = StringSplit($targetB,"")

Local $ans = ""

For $count=1 To $aArrayA[0]
    $ans &= $aArrayA[$count]
    $ans &= $aArrayB[$count]
Next
MsgBox("","",$ans)

2つの文字列を一文字ずつ分割し配列に代入、それを一個ずつ取りだし新しい文字列に連結

 

03. 円周率

“Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics.”という文を単語に分解し,各単語の(アルファベットの)文字数を先頭から出現順に並べたリストを作成。
解答が円周率になる。

第一案

$s = "Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."
$aArrayS = StringSplit($s," ")

Local $ans = ""

For $i=1 To $aArrayS[0]
    $len = StringSplit($aArrayS[$i],"")
    If StringIsAlpha($len[$len[0]])=0 Then
        $len[0]=$len[0]-1
    EndIf
    $ans &= $len[0] & ","
Next
MsgBox("","",$ans)

文字列を空白で分割し、分割した単語の最後がアルファベットでなければ-1

第二案

$s = "Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."
$s = StringRegExpReplace($s,"[.,]","")
MsgBox("","",$s)

文字列から、正規表現で「.,」ピリオド、カンマを先に取り除きます。

 

 

コメント

タイトルとURLをコピーしました