0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

この記事は 共通テスト手順記述標準言語 (DNCL) Advent Calendar 2025 の15日目の記事です。

DNCLを使って1次元配列の座標圧縮をします。
座標圧縮とは、配列の値を小さい順に連続する整数に置き換える操作です。
例えば {50, 10, 20, 50, 10} は {2, 0, 1, 2, 0} に変換されます。
詳しくは下の記事をご覧ください。

座標圧縮
関数 ソート(c,n)を
|  iを0からn-2まで1ずつ増やしながら
|  |  jを 0から n - 2 - iまで1ずつ増やしながら
|  |  |  もし c[j] > c[j+1]ならば
|  |  |  |  temp ← c[j]
|  |  |  |  c[j] ← c[j+1]
|  |  |  |  c[j+1] ← temp
|  |  |  を実行する
|  |  を繰り返す
|  を繰り返す
と定義する

関数 重複削除(c,n)を
|  d ← c[0]
|  d_size ← 1
|  iを1から n - 1 まで1ずつ増やしながら
|  |  もしc[i] != d[d_size - 1]ならば
|  |  |  d[d_size] ← c[i]
|  |  |  d_size を 1増やす
|  |  を実行する
|  を繰り返す
|  d, d_size を返す
と定義する

moto ← {50, 10, 20, 50, 10}
n ← 5
ans ← {0, 0, 0, 0, 0}
c ← ソート(moto, n)
d, d_size ← 重複削除(c, n)

iを0から n - 1 まで1ずつ増やしながら
|  jを0から d_size - 1 まで1ずつ増やしながら
|  |  もし moto[i] = d[j]ならば
|  |  |  ans[i] ← j
|  |  を実行する
|  を繰り返す
を繰り返す

ansを表示する
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?