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