fork download
  1. program simple_hash
  2. implicit none
  3.  
  4. ! 入力データ用の変数定義
  5. character(len=9) :: student_id = "202301107"
  6. character(len=12) :: student_name = "飯村翔哉" ! UTF-8環境を想定(3バイト×4文字)
  7.  
  8. ! ハッシュ計算用の変数(大きな数を取り扱えるよう4バイト整数を指定)
  9. integer(4) :: hash_value
  10. integer :: i
  11.  
  12. ! 初期ハッシュ値(任意のプライム数)
  13. hash_value = 5381
  14.  
  15. ! 1. 学籍番号のハッシュ計算(ループ処理)
  16. do i = 1, len(student_id)
  17. ! hash_value = hash_value * 33 + char_code
  18. hash_value = hash_value * 33 + ichar(student_id(i:i))
  19. end do
  20.  
  21. ! 2. 氏名のハッシュ計算(ループ処理)
  22. do i = 1, len(student_name)
  23. hash_value = hash_value * 33 + ichar(student_name(i:i))
  24. end do
  25.  
  26. ! 結果の出力(負の数になるのを防ぐため、絶対値にするか、またはそのまま出力)
  27. print *, "--- Hash Result ---"
  28. print *, "Input ID : ", student_id
  29. print *, "Input Name: ", student_name
  30. print *, "Hash Value: ", abs(hash_value)
  31. print *, "-------------------"
  32.  
  33. end program simple_hash
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
 --- Hash Result ---
 Input ID  : 202301107
 Input Name: 飯村翔哉
 Hash Value:   1190043279
 -------------------