Ichi Kanayaさんのプロフィール写真

Pascal言語は懐かしいですね.

1995年の京大の入試問題に

自然数 [math]n[/math] の関数 [math]f(n)[/math], [math]g(n)[/math][math]f(n)\equiv n\bmod7[/math], [math]g(n)\equiv3f(\sum_{k=1}^7k^n)[/math] によって定める(中略)あなたの好きな自然数 [math]n[/math] を一つ決めて [math]g(n)[/math] を求めよ.その [math]g(n)[/math] の値をこの設問におけるあなたの得点とする.

というものがありました.

モダンなスクリプト言語であればワンライナー(一行野郎)で総当たりできる

のですが,敢えてPascalで総当たりしてみたことがあります.

コードは次のようになりました.

  1. program kyoto; 
  2.  
  3. uses math; 
  4.  
  5. function f(n: real): real; 
  6. var 
  7. r: real; 
  8. d: real; 
  9. begin 
  10. r := floor(n / 7); 
  11. d := r * 7; 
  12. f := n - d 
  13. end; { f } 
  14.  
  15. function g(n: integer): real; 
  16. function expt(k, n: integer): real; 
  17. var 
  18. i: integer; 
  19. r: real; 
  20. begin 
  21. r := 1; 
  22. for i := 1 to n do 
  23. r := r * k; 
  24. expt := r 
  25. end; 
  26. var 
  27. k: integer; 
  28. a: real; 
  29. begin 
  30. a := 0; 
  31. for k := 1 to 7 do 
  32. a := a + expt(k, n); 
  33. g := 3 * f(a) 
  34. end; { g } 
  35.  
  36. var 
  37. i: integer;  
  38. begin 
  39. for i := 1 to 11 do 
  40. writeln(g(i)) 
  41. end. 

このコードは「文芸的プログラミングが普及しなかった理由」

というブログ記事を書くために筆者が書いたものです.

2000年以降で僕がPascalコードを読み書きしたのは,後にも先にもこの一度だけでした.(ヴィルトの「アルゴリズムとデータ構造」

は時々参照しますが,こちらはPascalではなくModula-2です.)

脚注

この質問に対する他の3件の回答を表示