banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Command line Quizzes  XML
  [Question]   Command line Quizzes 06/04/2008 23:27:09 (+0700) | #1 | 123599
[Avatar]
onlinehack
Member

[Minus]    0    [Plus]
Joined: 04/12/2007 23:07:12
Messages: 116
Location: Ma maison
Offline
[Profile] [PM]

Hôm nay onlinehack thấy có mấy câu đố vui về command line trong *nix khá là hay , mời mọi người vào thảo luận :

Câu 1 : Script tìm từ có 4 ký tự phổ biến nhất trong đoạn sau :


Ruby is a pink to blood red gemstone, a variety of the mineral corundum (aluminium oxide). The common red color is caused mainly by the element chromium. Its name comes from ruber, Latin for red. Other varieties of gem-quality corundum are called sapphires. It is considered one of the four precious stones, together with the sapphire, the emerald and the diamond. Improvements used include color alteration, improving transparency by dissolving rutile inclusions, healing of fractures (cracks) or even completely filling them. Prices of rubies are primarily determined by color (the brightest and best "red" called Pigeon Blood Red, command a huge premium over other rubies of similar quality). After color follows clarity: similar to diamonds, a clear stone will command a premium, but a ruby without any needle-like rutile inclusions will indicate the stone has been treated one way or another. Cut and carat (size) will also determine the price. Rubies have a hardness of 9.0 on the Mohs scale of mineral hardness. Among the natural gems only diamond is harder, with a Mohs 10.0 by definition.
 


Câu 2 : Script in 1 ma trận 10x10 với các số nguyên ngẫu nhiên từ 0 đến 9 ra màn hình ?

Chúc vui !
[Up] [Print Copy]
  [Question]   Re: Command line Quizzes 07/04/2008 01:38:30 (+0700) | #2 | 123635
kholostoi
Member

[Minus]    0    [Plus]
Joined: 05/04/2008 00:41:53
Messages: 27
Offline
[Profile] [PM]
bài 2: theo mình nên dùng 3 ý cơ bản như sau:
1. $RANDOM: mỗi lần sẽ in 1 số ngẫu nhiên từ 0-32767: vd: number=$RANDOM
2. dùng command let: let "number %= 10" --> sinh ngẫu nhiên từ 0-9
3. dùng 2 vòng lặp for hoặc while để in thành ma trận.
[Up] [Print Copy]
  [Question]   Re: Command line Quizzes 07/04/2008 03:03:31 (+0700) | #3 | 123655
kholostoi
Member

[Minus]    0    [Plus]
Joined: 05/04/2008 00:41:53
Messages: 27
Offline
[Profile] [PM]
bài 1: mình chưa hiểu rõ khái niệm "phổ biến nhất", nếu nó có nghĩa là xuất hiện nhiều nhất thì mình tạm thời nghĩ ra 1 phương án sau:
--------------------------------------------------------------------------------
1. thay các dấu khoảng trắng bằng các dấu xuống dòng: vd:
xd=$"\n"
cat data_file | tr ' ' $xd > temp1 --> temp1 sẽ chỉ là 1 cột thôi
2. lọc các cột chỉ có 4 ký tự mà ký tự bắt đầu và cuối cùng chỉ nằm trong [a-z] hoặc [A-Z]
grep '[a-zA-Z]\{4\}' temp1 > temp2 --> temp2 chỉ chứa các từ 4 ký tự và nằm trên 1 cột
3. lấy các mẫu từ 4 ký tự để sau đó đếm: vd
sort temp2 | uniq > pattern --> pattern chỉ chứa các dòng là các từ không trùng nhau
4. đọc từng dòng của pattern rồi sử dụng bộ lọc : grep -c để đếm số lần xuất hiện từ đó
(cái này bạn có thể dùng vòng for hoặc while kết hợp với IFS=$"\n" hoặc sử dụng block wwwect để thực hiện) mình ko viết code nữa smilie

Nếu viết cẩn thận chắc khoảng 10-15 dòng là xong. Hy vọng đúng ý đề bài smilie
[Up] [Print Copy]
  [Question]   Re: Command line Quizzes 10/04/2008 05:36:28 (+0700) | #4 | 124309
SemiNoob
Member

[Minus]    0    [Plus]
Joined: 06/03/2008 01:27:31
Messages: 7
Offline
[Profile] [PM]

kholostoi wrote:
bài 2: theo mình nên dùng 3 ý cơ bản như sau:
1. $RANDOM: mỗi lần sẽ in 1 số ngẫu nhiên từ 0-32767: vd: number=$RANDOM
2. dùng command let: let "number %= 10" --> sinh ngẫu nhiên từ 0-9
3. dùng 2 vòng lặp for hoặc while để in thành ma trận. 


Hehe triển khai theo ý của anh nè (vì mới là newbie nên viết theo gợi ý trước smilie )

Code:
#!/bin/bash
for ((x=0; x<10; x++)) 
	do 
		y=0
		until [ "$y" = "9" ]
			do
				number=$RANDOM
				let "number %=10"
				echo -n "$number "
				y=$((y + 1))
			done
		number=$RANDOM
		let "number %=10"
		echo $number
	done
exit 0

Đoạn:
Code:
number=$RANDOM
		let "number %=10"
		echo $number

là do em muốn ma trận khi in ra nhìn đẹp đẹp. Nếu không thì có thể sửa lại:
Code:
#!/bin/bash
for ((x=0; x<10; x++)) 
	do 
		for ((y=0; y<10; y++)) 
			do
				number=$RANDOM
				let "number %=10"
				echo -n "$number "
			done
		echo ""
	done
exit 0


Mí anh coi giùm em vậy là ổn chưa? smilie
[Up] [Print Copy]
  [Question]   Re: Command line Quizzes 10/04/2008 06:26:53 (+0700) | #5 | 124320
[Avatar]
lihavim
Elite Member

[Minus]    0    [Plus]
Joined: 08/06/2004 15:19:32
Messages: 506
Offline
[Profile] [PM]
Bài 2:
Thay nhân chia cộng trừ bằng việc cắt thẳng thằng đó:
Code:
for ((i=1; i<11; i++)); do
   Hien=""
   for ((j=1; j<11; j++)); do
      Hien="${Hien} ${RANDOM:1:1}"
   done
   echo $Hien
done

[Up] [Print Copy]
  [Question]   Re: Command line Quizzes 12/04/2008 02:41:53 (+0700) | #6 | 124659
[Avatar]
onlinehack
Member

[Minus]    0    [Plus]
Joined: 04/12/2007 23:07:12
Messages: 116
Location: Ma maison
Offline
[Profile] [PM]
Câu 2 trả lời như lihavim là okie. Nguyên văn trong đáp án :

Code:
for i in `seq 1 10`; do
  for i in `seq 1 10`; do expr $RANDOM % 10; done | xargs
done


Còn câu 1, ai có thể viết trong ... 1 dòng được không ?

Note: Từ có 4 ký tự "phổ biến nhất" nghĩa là xuất hiện nhiều nhất .
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|