通信用語の基礎知識 日本文化チャンネル桜二千人委員会 戻る

通常PC用 / 人気 更新 今日 カテ
電子計算機 > 仕様・構造 > ソフトウェア > プログラミング言語 > 言語仕様
シュワルツ変換
辞書:電算用語の基礎知識 プログラミング用語編 (PTPROGY)
読み:シュワルツへんかん
外語:Schwartzian Transform
品詞:名詞

リストを、各要素に一定の演算を施したもので操作したいが、最終的に必要なのが演算の結果ではなく、本来の要素である場合に用いる手法。

目次
特徴

一定の演算を施した要素と元々の要素を組にしたリストを作成し、演算された要素を用いてリスト全体に対して操作を行ない、最後に組の中から元々の要素だけを取り出すことで必要な結果を得る。

とくに、リストの整列の際、要素の比較に用いる条件が複雑な場合に、あらかじめ各要素を比較するための値を算出しておいて、何度も計算するのを避けるために用いることが多い。

名前は、Just another Perl hacker,であるランダル・シュワルツ(Randal L. Schwartz)に由来する。

記述は簡潔になるが、一時作業用のメモリー消費量が余分に必要になる。

手順
  1. 与えられたリストから「各要素と、その要素に与えられた演算を施したものの組」のリストを作成。
  2. 操作(sortなど)を行なう。
  3. 2の結果から、本来の要素に相当するものだけを取り出す。
実例

文字列のリストを、大文字/小文字の違いを無視して整列する例。

Perlの場合、次のようになる。

@sorted = map { $_->[0] }
          sort { $a->[1] cmp $b->[1] }
          map { [ $_, lc($_) ] } @unsorted;

Rubyの場合、次のようになる。

sorted = unsorted.collect { |e| [ e, e.downcase ] }.
                  sort { |a, b| a[1] <=> b[1] }.
                  collect {|e| e[0] }
リンク
関連する用語
Perl
Ruby

[再検索] [戻る]


通信用語の基礎知識検索システム WDIC Explorer Ver 7.03 (16-May-2019)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club
KisoDic