2018년 7월 8일 일요일

엘러리퀸의 국명시리즈

요즘 엘러리퀸의 국명 시리즈를 다시 읽고 있다. 일부는 이미 읽었던 것이지만,
워낙 옛날에 읽었던 것이라 기억도 안나고 새로 읽는 기분이다.
간단히 책의 내용과 사건 해결에 중요했던 질문을 적어본다.


1. 로마 모자의 비밀:
연극이 한창인 '로마' 극장에서 독살이 벌어진다.
죽은 악덕 변호사의 모자가 사라진 것을 알게 되는데 모자에는
협박과 관련된 중요 증거가 숨겨져 있었다.
극장과 관객을 철저히 수색했지만, 없어진 모자는 발견되지 않았고,
모자를 안쓰고 왔던 사람이 모자를 쓰고 나간 경우도 없었고,
연극에 사용된 모자도 전부 극장 소유로 수상한 모자는 없었다.
범인은 어떻게 변호사의 모자를 가지고 나갈수 있었고,
바꿔치기를 했다면 범인의 모자는 어디로 간 것일까?
이 질문에 대한 답을 하는 순간 가능한 범인의 조건이 밝혀진다.

2. 프랑스 파우더의 비밀:
프랑스(프렌치) 백화점의 전시 윈도우에 장치된 벽장 침대에서
시체가 굴러나온다.  범행이 벌어진 날 범인은 백화점에서 빠져 나갈 수
없었고, 실제 범행이 벌어진 장소는 백화점 최상층의 아파트였다는 것이
밝혀진다.  범인은 어째서 번거롭게 시체를 1층 전시실로 옮긴 것일까?
범행 장소에서는 책상에 있던 북엔드에서 지문 채취용 가루(파우더)를 이용해서
지문이 철저하게 지워졌음이 밝혀진다.
범인은 어떤 사람이길래 지문 채취용 가루를 사용했을까?

3. 네덜란드 구두의 비밀:
'네덜란드 기념병원'에서 수술 받기위해 대기중이던 환자가 살해 당한다.
키가 작고 절뚝거리는 담당 의사를 흉내낸 누군가가 목격되고,
범행에 사용되었을 것으로 생각되는 구두와 흰색 바지가  발견된다.
구두는 범행당시 구두끈이 끊어진 것으로 보이는데, 반창고로 임시 수리되어 있었고,
바지는 길이가 줄여지도록 가봉이 되어 있었다.
그리고, 그 담당 의사도 살해되는 사건이 벌어진다. 엘러리는 범행에 사용된
구두의 상태, 바지가 버려진 이유, 그리고 두번째 범행시의 캐비넷의 위치등으로 부터
예상밖의 범인을 유추해낸다.


2권의 국명 시리즈를 읽고 난 느낌은,  특별한 플롯도 없이 너무 
너무 늘어지는 것 같다는 것이다.
엘러리 퀸의 추리는 타당해 보이지만, 장편으로 쓸 만한 내용이었는지는
의문이다.
기괴한 사건이 발생하고 그것을 논리적으로 설명하는 한가지 해답을 찾는다는
엘러리 퀸 형식의 장점을 가장 잘 살리는 데는
단편집이 가장 어울렸을 것이라는 생각이 든다.

2018년 6월 20일 수요일

Sorting of an array in FORTAN (using MINLOC)

There is no intrinsic sorting function in FORTAN.
Though it is easy to write a sorting program by using various sorting algorithm
or import the exising codes from internet,
one of the simple method is to use MINLOC intrinsic function in FORTRAN.
(Though it may be not an efficient one, it is short.)

Suppose there is an array size N, narray(1:N). Then, one can sort the array by

Do i=1,N
  l = MINLOC(narray(i:N),1)
  temp = narray(i)
  narray(i)=narray(i+l-1)
  narray(i+l-1)= temp
End do

Now, narray(1:N) is sorted by its values.

If one want to keep track of original index, prepare another array, index(1:N).

Do i=1,N
 index(i)=i
End Do
Do i=1,N
  l = MINLOC(narray(i:N),1)
  temp = narray(i)
  narray(i)=narray(i+l-1)
  narray(i+l-1)= temp
  temp=index(i) 
  index(i)=index(i+l-1)
  index(i+l-1)=temp
End do

Now, index(1:N) is the index in original array.


2018년 5월 30일 수요일

change encoding of a text file between euc-kr utf-8

맥에서 자막파일이 euc-kr 이라 한글이 제대로 나오지 않을 때 해결방법.

iconv -f euc-kr -t utf-8 [input file name] > [output file name]

iconv 를 이용하여 text encoding  을 바꿀 수 있다.

2018년 3월 4일 일요일

수식 쓰기 테스트

블로그에서 수식을 쓰기 테스트
각 포스트를 작성할 때, HTML 모드로 들어가서
글의 맨 위쪽에 다음과 같은 스크립트를 추가한다. 
(비슷한 스크립트를 제공하는 곳이 많이 있는 것 같다.)

<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"> MathJax.Hub.Config({ extensions: ["tex2jax.js","TeX/AMSmath.js","TeX/AMSsymbols.js"], jax: ["input/TeX", "output/HTML-CSS"], tex2jax: { inlineMath: [ ['$','$'], ["\\(","\\)"] ], displayMath: [ ['$$','$$'], ["\\[","\\]"] ], }, "HTML-CSS": { availableFonts: ["TeX"] } }); </script>
스크립트가 추가된 다음부터는 html 에디트에서 $ 를 이용하여 수식 모드로 들어 갈 수 있다.
$$\int_0^1 dx f(x)$$

2018년 1월 8일 월요일

Python dictionary sorting by values

To sort we may use (1) list.sort() : sort method for list  
(2) sorted(iterable) : sorted function for iterables

In case of dictionary, sorted(dictionary) by default sort in keys. 
In other words, in order of dictionary.keys()

To sort by values of a dictionary, one have to use key=function argument in sorted.

For example:
dict={ a: 3, b: 1, c: 2}

sorted(dict) gives [a,b,c]

We may define a function or use lambda function to sort by value

sorted(dict, key= lambda x: dict[x])  gives [b,c,a]

In case of dictionary of dictionary, we may use dictionary.items() as iterables.

mydict={ a: { age:10 }, b: {age:3}, c:{age:5} }

def getV(x):                  # dictionary.items gives tuple of key and value
    return x[1]['age']         
sorted(mydict.items(), key=getV)

or 

sorted(mydict.keys(), key= lambda x:mydict[x]['age'])