console

[cs]

รันคำสั่งใน history

ต้องการรันคำสั่งที่ 7 ใน history

wk@wk-laptop:~$ history | more
    1  sudo apt-get update
    2  sudo apt-get install bpython 
    3  bpython 
    4  sudo apt-get install erlang
    5  lsl
    6  ls
    7  nautilus .  &
    8  cd /media/
    9  ls
   10  sudo apt-get install ntfs-3g 
   11  sudo apt-get install ntfs-config 
   12  sudo apt-get update
   13  ls
   14  cd /media/
   15  ls
   16  ntfs-3g
   17  sudo apt-get install erlang
   18  mount
   19  sudo mkdir /dos
   20  ls
   21  sudo rm -r /dos/
   22  sudo mkdir /dos
   23  cd /dos/
wk@wk-laptop:~$ !7
nautilus .  &

Filed under  //   history   more  

วิธีทำซ้ำคำสั่งที่ผ่านมา

  1. กดปุ่มลูกศรขึ้น กด Enter
  2. พิมพ์ !! กด Enter
  3. พิมพ์ !-1 กด Enter
  4. Ctrl+P กด Enter

Filed under  //   bash  

หาไฟล์จากขนาด

หาไฟล์ที่มีขนาดมากกว่า 10 M ในไดเร็กทอรี่ปัจจุบัน (./)

wk@wk-laptop:~$ find ./  -type f -size +10M
./.cache/chromium/Cache/data_3
./.cache/chromium/Cache/data_1
./.cache/chromium/Cache/data_2
./.mozilla/firefox/7ax1m6pm.default/urlclassifier3.sqlite
./.config/chromium/Default/History Index 2009-12
./.config/chromium/Default/History Index 2009-12-journal
./.config/chromium/Default/Thumbnails
./.config/chromium/Safe Browsing Bloom

Filed under  //   find   size  

มาแต่เสียงไม่มีภาพ

ได้หนังมาหนึ่งเรื่องกะจะนอนดูซะหน่อย แต่ดันเปิดมาไม่มีภาพมาแต่เสียง มันบอกว่ามันหา XVID MPEG-4 decoder ไม่เจอ นี้แหละเขาเรียกว่า Koala มีกรรม สุดท้ายก็ต้องลงเพิ่ม วิธีการคือ กด Alt + F2 แล้ว Copy ขอความนี้ไปวาง "apt:ubuntu-restricted-extras?section=universe?section=multiverse" กด Enter หนึ่งครั้ง แล้วมันจะบอกว่านั่งรออีก 15 ชั่วโมงนะ  

(download)

Filed under  //   decoder   ubuntu  

ลง OS ใหม่

Screenshot

ลง Ubuntu 9.10 เพราะว่า 9.04 ที่ใช้ก่อนหน้านี้เละเทะไปแล้ว ลงโปรแกรมเยอะเกินเหตุ มั่วมากๆ อืดสุดๆ ไปลงนรกได้เลย 9.04

Filed under  //   os   ubuntu  

Project Euler 12

Click here to download:
triangle.erl (0 Bytes)

นั่งเขียนโปรแกรมแก้โจทย์ข้อ 12 ได้ออกมาแล้วน่าจะทำงานถูก เนื่องจากใช้วิธี Brute Force ก็เลยอืม... ยังไม่ได้ผลลัพท์ คงต้องแก้ให้เข้าทีเข้าทางก่อน แล้วจะมาโพสอัปเดตอีกที

Filed under  //   erlang   euler  

Project Euler 14

Click here to download:
chain.erl (0 Bytes)

โจทย์
The following iterative sequence is defined for the set of positive integers:
n = n/2 (n is even)
n = 3n + 1 (n is odd)
Using the rule above and starting with 13, we generate the following sequence:
13 -> 40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1
It can be seen that this sequence (starting at 13 and finishing at 1) contains 10 terms. Although it has not been proved yet (Collatz Problem), it is thought that all starting numbers finish at 1.
Which starting number, under one million, produces the longest chain?
NOTE: Once the chain starts the terms are allowed to go above one million

-module(chain).
-export([main/1]).

main([I]) ->
        V = list_to_integer(atom_to_list(I)),
        A = chain(start, V, 0 , V),
        io:format("Max ~p = ~p ~n", A),
        init:stop().

chain(1, 1) ->
        [1];

chain(0, N) ->
        [N] ++ chain( (N div 2) rem 2 , N div 2);

chain(1,N) ->
        [N] ++ chain( (3*N + 1) rem 2 , 3*N + 1).

chain(start, Start, Chain, 1) ->
        [Start, Chain];

chain(start, Start,Chain , N) ->
        M = length(chain(N rem 2, N)),
        A = M > Chain,
        io:format("~p = ~p ~n", [N,M]),
        case A of
                true -> chain(start, N, M ,N-1 );
                false -> chain(start, Start, Chain ,N-1)
        end.

wk# erlc chain.erl
wk# time erl -noshell -s chain main 999999
999999 = 259 
999998 = 259 
999997 = 114 
... 
3 = 8 
2 = 2 
Max 837799 = 525

 

Filed under  //   erlang   euler  

Python Challenge 6

Python Challenge ด่าน 6
  • จากด่าน 5 ได้คำตอบคือ channel ดังนั้นเมื่อนำมาเติมใน url จะได้ http://www.pythonchallenge.com/pc/def/channel.html ซึ่งจะปรากฏหน้าตาของคำถามข้อ 6 โดยเป็นรูปกางเกงมีซิบ ตอนนี้ยังเดาไม่ออกมามันคืออะไร โดยเมื่อดูจากโค้ด html ในหน้า http://www.pythonchallenge.com/pc/def/channel.html ก็ไม่สื่อความหมายอะไรในข้อนี้ มีเพียงข้อความเชิญชวนให้บริจาค ดังนี้
<!-- The following has nothing to do with the riddle itself. I just
thought it would be the right point to offer you to donate to the
Python Challenge project. Any amount will be greatly appreciated.
-thesamet
--> 
  • ทดสอบเปลียน url จาก channel.html เป็น channel.zip ปรากฏว่าได้ไฟล์ zip มาหนึ่งไฟล์  ภายในมีไฟล์ .txt 910 ไฟล์ โดยมีไฟล์เดียวที่ชื่อไฟล์เป็นตัวอักษร คือ readme.txt นอกนั้นเป็นไฟล์ที่มีชื่อเป็นตัวเลข เช่น 10771.txt 10653.txt ... ใน readme.txt มีข้อความเขียนไว้ว่า 
welcome to my zipped list.

hint1: start from 90052
hint2: answer is inside the zip
  • จากคำใบ้สองข้อที่ได้ใน readme.txt ก็เริ่มจากเปิดไฟล์ 90052.txt ขึ้้นมาโดยภายในไฟล์มีข้อความว่า
Next nothing is 94191
  • เปิดไฟล์ที่สอง คือ 94191.txt ซึ่งก็พบข้อความ
Next nothing is 85503
  • จากรูปแบบข้อความแบบนี้ อาจบอกได้เลยว่ามันเป็นข้อความลูกโซ่ที่โยงไปยังไฟล์ต่างๆ อาจเชื่องโยงกันทั้ง 900 ไฟล์ ซึ่งแน่นอนว่าต้องใช้การเขียนโปรแกรมเพื่อหาจุดสิ่้นสุดของลูกโซ่นี้
  • หลังจากจากจากใช้โปรแกรม ch61.py ปรากฏว่า Next nothing สิ้นสุดที่ 
Next nothing is 46145 
  • เมื่อเปิดดูไฟล์ 46145.txt เจอข้อความเพียงบรรทัดเดียว คือ
Collect the comments.
  • บอกใบ้อะไรบางอย่าง คือ ให้รวบรวม comment? แล้ว comment คือ อะไร?
  • ต้องกลับย้อนไปดูคำใบ้ในไฟล์ readme.txt อีกครั้งหนึ่ง ซึ่งบอกว่า คำตอบอยู่ใน zip
  • ดังนั้นจึงต้องไปค้นโมดูลที่เกี่ยวกับ zip ของ python ซึ่งพบว่ามีโมดูลหนึ่งที่ใช้จักการกับไฟล์ zip นั่นคือ zipfile ซึ่งมีไล่ดู class ต่างๆ ใน zipfile แล้ว พบว่ามีคลาสหนึ่งที่มีชื่อ attribute ว่า comments ซึ่งทำให้รู้ว่าไฟล์ที่อยู่ใน zip ทั้งหมดนั่นสามารถใส่ข้อมูลชุดหนึ่งลงไปด้วยนั่นก็คือ comment นั่นเอง
  • เมื่อดู comment จากไฟล์ต่างๆ พบว่าจะมีตัวอักษรเพียงตัวเดียว เช่น  X O G Y  N E * และบางเพียงไม่มีตัวอักษรใดเลย
  • จากนั้นใช้โปรแกรม ch62.py นำ comment ทั้งหมดมารวมกันโดยเริ่มจาก comment ในไฟล์ 90052.txt ไปไฟล์แรกแล้วไล่ตาม step Next nothing is เรื่อยๆ เมื่อพิมพ์ผลลัพท์ออกมา ได้รูปเบนเนอร์ที่มีข้อความว่า "hockey"
  • เปลี่ยน url จาก http://www.pythonchallenge.com/pc/def/channel.html เป็น http://www.pythonchallenge.com/pc/def/hockey.html
  • เมื่อเข้าไปใน http://www.pythonchallenge.com/pc/def/hockey.html เจอข้อความที่เขียนไว้ว่า
it's in the air. look at the letters.
  • ให้มองไปบนท้องฟ้า มองไปที่ตัวอักษร ซึ่งเมื่อสังเกตจากเบนเนอร์ที่แสดงคำว่า hockey ปรากฏว่ามีตัวอักษรเรียงกัน คือ O X Y G E N 
  • เมื่อเปลี่ยน url จาก http://www.pythonchallenge.com/pc/def/hockey.html เป็น http://www.pythonchallenge.com/pc/def/oxygen.html พบว่าตอนนี้เราอยู่ในด่านที่ 7 แล้ว
  • จบด่านนี้

(download)

Click here to download:
ch61.py (0 Bytes)

Click here to download:
ch62.py (0 Bytes)

Filed under  //   challenge   python  

การเปลี่ยนข้อความเป็น Tuple


เช่น มีข้อความ "(8, 12.25), (13, 15), (16.75, 18.5)"  ต้องการเปลี่ยนเป็น Tuple

1. ใช้ฟังก์ชัน eval
>>> eval("(8, 12.25), (13, 15), (16.75, 18.5)")
((8, 12.25), (13, 15), (16.75, 18.5))

2. ใช้โมดูล ast
>>> import ast
>>> print ast.literal_eval("(8, 12.25), (13, 15), (16.75, 18.5)")
((8, 12.25), (13, 15), (16.75, 18.5))

Filed under  //   python   tuple  

Z

Click here to download:
zeez2.erl (0 Bytes)

พิมพ์ตัว Z ออกมาเฉยๆ
-module(zeez2).
-export([main/1]).

main([A]) ->
        L = list_to_integer(atom_to_list(A)),
        zeez( true ,L, L).
zeez(true, 0, N) ->
        io:format("~p~n", [zeez(z, N)]),
        init:stop();
zeez(false, M, N) ->
        io:format("~p~n", [zeez(space, M)]),
        zeez(M-1 rem N =:= 0, M-1, N );
zeez(true, M, N) ->
        io:format("~p~n", [zeez(z, M)]), 
        zeez(M-1 rem N =:= 0, M-1 , N ).
zeez(space, 0) ->
        "Z";
zeez(space, N) ->
        "-" ++ zeez(space, N-1);
zeez(z,0) ->
        "Z";
zeez(z, N) ->
        "Z" ++ zeez(z, N-1).

wk# erlc zeez2.erl
wk# erl -noshell -s zeez2 main 10
"ZZZZZZZZZZZ"
"---------Z"
"--------Z"
"-------Z"
"------Z"
"-----Z"
"----Z"
"---Z"
"--Z"
"-Z"
"ZZZZZZZZZZZ"

Filed under  //   erlang   z