鳥の巣箱

ネトゲしたり、機械いじったり、ソフト書いたり、山篭ったり、ギャンブルしたりする人

プログラムで指数が小数のべき乗を計算するときの話

プログラム乗でべき乗の計算をすることは多々あると思います。
整数のべき乗は簡単です。
では、小数のべき乗はどう考えるべきでしょうか?

例えば2^{1.5}みたいなやつです。

使用する言語によっては、これをサポートする関数が用意されてたりします。DelphiとかはPower関数でできますね。
ですが、DelphiもStandard版などにはMathユニットが付属していないそうです。

こういった関数が用意されていない場合、どうすれば計算できるのでしょうか。

続きを読む

TListViewをResizeしたときのItem Objectの操作

TListViewを使っていてハマった問題。

TListViewのサイズが変わると、リスト内のオブジェクト(ButtonやImageなど)のサイズが勝手に変わってしまっていた。

続きを読む

Pythonで終了処理を実行させる

一つの問題です。
よくあるRaspberry PiのGPIOを制御するプログラムです。
以下のようなソースコードがあって

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BOARD)
GPIO.setup(13, GPIO.OUT)

while True:
    GPIO.output(13, True)
    time.sleep(1)
    GPIO.output(13, False)
    time.sleep(1)
    
GPIO.cleanup()

これを実行中に、Ctrl-Cやkillなどで停止させた場合、GPIO.cleanup()は実行されるでしょうか。

続きを読む

EurekaLogでスレッドの例外を受け取る

EurekaLogで別スレッドで発生した例外を受け取る方法としては、公式Documentにいろいろと書いてあります。

EurekaLog 7 Documentation

続きを読む

平均の計算をループを使わずに処理時間を短縮する

タイトル通りです。
簡単に平均値の計算をする場合、大体はこんな感じの関数を使うことになるでしょう。

function Average(data : array of Double):Double;
var
  I : Integer;
begin
  Result := 0;
  for I := 0 to Length(data) -1 do
    begin
      Result  := Result + data[I];
    end;
  Result := Result / Length(data);
end;

基本的には、データ要素数分のループ処理が必要になります。
ただ、これは要素数が増えたりなんだりで当然計算回数が増えることになるので
数が多くなればなるほど負荷がかかります。
そこで、ループを使わずに平均値を出していきます。

続きを読む