2010/09/15
芝浦工大
学情(http://www.gakujo.ne.jp)主催の「就活キャンパス芝浦工大」に参加するため、今週の金曜に芝浦工大に行きます。
あまりにミスマッチな学生と話をすると、お互いに疲れる上に、最悪の場合、嫌な気分になりかねません。すごいスーパープログラマでなくてもいいのですが、最低限、プログラミングを楽しめたり、プログラムのことを考えるのを楽しく思える人でないと、アリエルでプログラマにはなれません。
このため、某W社のマネみたいで気がひけますが、ブースにコードを張り出すことを考えています。
難しすぎると誰も寄ってこないかもしれないので、以下のコードを考えました。
// 次のコードの問題点を指摘してください
// リストのすべての要素を削除(clearメソッドの再発明)
public void buggyClear(List<String> lst) {
for (int i = 0; i < lst.size(); i++) {
lst.remove(i);
}
}
一応Javaのコードの断片ですが、Javaを知らなくても、勘が良ければ回答できます。
実際のところ、別に正解できなくてもいいかとも思っています。張り出されたコードを見てぎょっとして遠ざかるか、近づいてじっと眺めるか、の最初の態度だけでも選別可能かと思っています。
懸念は遠ざかる人には2種類いることです。難しそうだからと逃げてしまう人とJavaを小馬鹿にして去る人です。後者を逃さないために別のコードも考えました。次のコードです。
; 次の関数は何をするか答えてください
(defun qsort (lst)
(if (cdr lst)
(let ((pivot (car lst)) (lst (cdr lst)) right left)
(while lst
(if (> (car lst) pivot)
(setq right (cons (car lst) right))
(setq left (cons (car lst) left)))
(setq lst (cdr lst)))
(append (qsort left) (list pivot) (qsort right)))
lst))
一応Lisp(elisp)のコードですが、Lispを知らなくても、勘が良ければ回答できます。と言うより、ほとんど答えは書いてあるに近いのですが。こっちも重要なのは、よく分からないコードを見せられた時に逃げ出さないかを見たいだけです。
ちなみに模範回答は、Javaの方を見て「副作用が...」とつぶやいて、Lispの方を見て「効率が...」とつぶやくことです。
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/shibaura-it/tbping