Хагас жилийн өмнө дөнгөж авсан зөөврийн тооцоолуураа шууд л Убунту 11.10-ыг суулгаж билээ. Бүх зүйл л дажгүй байлаа. Гэхдээ Убунту дээр заавалчгүй нэг алдаа гардаг. Алдаа гардаг гээд би муулсангүй. Харин тэрхүү алдааг засна гэдэг л хамгийн том мэдлэг, ухааныг өгдөгөөрөө хамгийн сайхан нь.
За тэгээд Убунту 11.10 дээр touchpad-ны scroll нь ажилладаггүй юм байна. Гүүглэдээд гүүглэдээд олигтой шийдэл олж чадалгүй тэгээд хаясан юм. Тэгсэн саяхан нет ухаж байгаад ажиллуулах аргыг оллоо. За тэгээд тэрийгээ хуваалцахаар шийдлээ.
Дараах зүйлсийг хийнэ:
1. sudo gedit /etc/default/grub гэж терминал дээрээ бичнэ
2. GRUB_CMDLINE_LINUX гэсэн дээр мөрийг олоод GRUB_CMDLINE_LINUX="i8042.reset i8042.nomux i8042.nopnp i8042.noloop" болгоно.
3. Дараа нь grub файлаа шинэчлэнэ: sudo update-grub
4. http://www.mediafire.com/?74wbdmph52sugw5 гэсэн хаягаар орж psmouse-alps-dkms_0.10_all.deb-ийг татаж аваад суулгана.
5. Тооцоолуураа дахин эхлүүлнэ.
Ингээд л таны scroll чинь ажилчихсан байна.
asdf
Thursday, December 29, 2011
Tuesday, November 1, 2011
Сонгох Эрэмбэлэлт (Selection Sort) - C vs Lisp
Сонгох эрэмбэлэлт. Энэ эрэмбэлэлтийг Си болон Лисп хэл дээр үзье. Сонгох эрэмбэлэлтийн мөн чанар нь бол жагсаалтаас хамгийн бага элементийг сонгож жагсаалтын эхний элементтэй солиход оршдог. Хамгийн бага элементийг олохын тулд жагсаалтыг бүх элементийг шалгадаг болохоор жагсаалтын хэмжээ их үед тохиромжгүй эрэмбэлэлтийн арга юм. Харин жижиг жагсаалтыг (20, 30 элементтэй) бол хурдан эрэмбэлдэг. Бидний өмнө үздэг Хөвөх Эрэмбэлэлт-ээс арай хурдан.
Хугацааны хувьд бол O(n2).
Си дээрх код:
Гаралт нь:
Одоо Лисп дээр үзье. Лисп дээр маш хялбархан бичиж болно.
Одоо гаралтыг нь харъя:
Дараагийн эрэмбэлэлтээр Оруулах Эрэмбэлэлт (Insertion Sort) үзнээ. Явандаа бүх эрэмбэлэлтээ үзсэний дараа ерөнхий харьцуулалт хийх санаа байна. За тэгээд сонирхож байгаа хүмүүс үзэл бодлоо чөлөөтэй хуваалцаарай!
Хугацааны хувьд бол O(n2).
Си дээрх код:
Гаралт нь:
Одоо Лисп дээр үзье. Лисп дээр маш хялбархан бичиж болно.
Одоо гаралтыг нь харъя:
Дараагийн эрэмбэлэлтээр Оруулах Эрэмбэлэлт (Insertion Sort) үзнээ. Явандаа бүх эрэмбэлэлтээ үзсэний дараа ерөнхий харьцуулалт хийх санаа байна. За тэгээд сонирхож байгаа хүмүүс үзэл бодлоо чөлөөтэй хуваалцаарай!
Monday, October 24, 2011
Си дээр ингэж болдог байсан юм байна ш дээ
Си дээр нэг сонин юм харлаа. Тухайлбал функц дээр. Ингэж болдог гэхээр гайхмаар ч юм шиг. Функцыг тодорхойлж бичихэд ингэж бичдэгийг анх удаа л харж байна. Хамгийн Си-гийн функцыг ингэж бичнэ гэж заалгуулж байлаа.
datatype function-name (datatype argument-list)
{
local variable declarations;
executable statements;
......................................
return (expression);
}
За нэг ийм л юм үздэг билээ. Жишээ нь хоёр тооны ихийг олдог функц гэвэл:
int max (int a, int b)
{
return (a > b) ? a : b;
}
Тэгсэн бас ингэж бичиж болдог юм байна шүү!
datatype function-name (argument-list)
argument declaration;
{
local variable declarations;
executable statements;
......................................
return (expression);
}
Энэ форматаар бол дээрх мах функцыг бол ингэж бичиж болох нь:
int max (a, b)
int a, b;
{
return (a > b) ? a : b;
}
Гэхдээ анх сурсан минь арай эвтэйхэн юмаа. Хэ хэ.
datatype function-name (datatype argument-list)
{
local variable declarations;
executable statements;
......................................
return (expression);
}
За нэг ийм л юм үздэг билээ. Жишээ нь хоёр тооны ихийг олдог функц гэвэл:
int max (int a, int b)
{
return (a > b) ? a : b;
}
Тэгсэн бас ингэж бичиж болдог юм байна шүү!
datatype function-name (argument-list)
argument declaration;
{
local variable declarations;
executable statements;
......................................
return (expression);
}
Энэ форматаар бол дээрх мах функцыг бол ингэж бичиж болох нь:
int max (a, b)
int a, b;
{
return (a > b) ? a : b;
}
Гэхдээ анх сурсан минь арай эвтэйхэн юмаа. Хэ хэ.
Sunday, October 23, 2011
Хөвөх эрэмбэлэлт (Bubble Sort) Х Лисп хэл Х Си хэл
За Лисп хэлийг оролдож үзэж байна. Тэгээд энэ хөвөх эрэмбэлэлтийг Лисп дээр хийж үзэхээр шийдлээ. Хөвөх эрэмбэлэлт бол хамгийн энгийн эрэмбэлэлт. Үндсэн санаа нь бол хөөс хөвөх зарчимтай адил. Усан дотор хөнгөхөнүүд нь дээш хөөрч, хүнд нь доошилдогтой адил жагсаалтын бага элементүүд аажмаар дээшилдэг. Үндсэн хийж байгаа үйлдэл нь зэрэгцээ элементүүдийг шалгаад байрыг нь солих замаар явна.
Хөвөх эрэмбэлэлт нь туулай яст мэлхийн төрлийн эрэмбэлэлт. Энэ төрлийн эрэмбэлэлт нь нэг төрлийн элементүүд нь хурдан байрандаа орж үлдсэн нь удаан байрандаа ордог. Хөвөх эрэмбэлэлт дээр бол багаас их рүү эрэмбэлж байгаа тохиолдолд их элементүүд нь хурдан байрандаа орж бага элементүүд нь удаан байрандаа ордог. Өөрөөр хэлбэл их элементүүдийг зөв байранд нь оруулахад чиглэгдсэн гэсэн үг. Доор хөдөлгөөнт жишээ үзүүлсэн байна.
Хөвөх эрэмбэлэлт нь туулай яст мэлхийн төрлийн эрэмбэлэлт. Энэ төрлийн эрэмбэлэлт нь нэг төрлийн элементүүд нь хурдан байрандаа орж үлдсэн нь удаан байрандаа ордог. Хөвөх эрэмбэлэлт дээр бол багаас их рүү эрэмбэлж байгаа тохиолдолд их элементүүд нь хурдан байрандаа орж бага элементүүд нь удаан байрандаа ордог. Өөрөөр хэлбэл их элементүүдийг зөв байранд нь оруулахад чиглэгдсэн гэсэн үг. Доор хөдөлгөөнт жишээ үзүүлсэн байна.
Псевдо код нь:
procedure bubbleSort( A : list of sortable items )
repeat
swapped = false
for i = 1 to length(A) - 1 inclusive do:
if A[i-1] > A[i] then
swap( A[i-1], A[i] )
swapped = true
end if
end for
until not swapped
end procedure Нэг иймэрхүү байх нь. За тэгвэл Си хэл дээрх ингэж бичлээ. Гаралт нь: За тэгвэл одоо Лисп хэл дээр бичиж үзье. Гаралт нь: Лисп хэлний бичиглэлийг харж байгаа байх. Си-гээс хоёр дахин бага бичлэгтэй байгаа биз. Дараа нь Сонголтын Эрэмбэлэлтийн тухай оруулнаа.
Saturday, October 22, 2011
Gedit дээр Lisp хэлний онцгойлолт нэмэх
За Lisp хэлний онцгойлолт (highlight) ийг http://www.mediafire.com/?3g8c4r53csj0ltx хаягаас татаж авна. Тэгээд татаж авсан шахсан файлаа задлаад install.sh гэсэн шэлл файлыг терминалаар ажиллуулна. Тэгээд gedit-ээ дахин ачааллуулахад autolisp гэсэн онцгойлолт нэмэгдсэн байна.
Gedit-ээ жаахан тоноглочихъё
Убунту хэрэглэгчид gedit програмыг андахгүй биз дээ. Тэгвэл Gedit дээрээ жаахан юм нэмье.

- Ubuntu Software Center-ээс gedit-plugins гэдгийг суулгана.
- Дараа нь Gedit-ийнхээ Edit цэсний Preferences-рүү орж Plugins цэс дээр дарж Embedded Terminal гэснийг нь идэвхжүүлнэ.
- Хаалтуудыг автоматаар хаадаг байхыг хүсвэл Bracket Completion-ийг идэвхжүүлнэ.
- Тэгээд View цэсний Bottom Panel-ийг дарахаар Gedit дээр терминал маань гараад ирнэ.
- Edit->Preferences->Color гэсэн цэснээс Gedit-ээ гоё өнгөтэй болгож болно.

Thursday, December 16, 2010
Нууцлаг хавтас хэрэг 7: 13-н гавал (Mystery Case Files 7: 13 Skulls)тоглоомны алдаа
Энэ тоглоомыг нийтдээ 9 цаг тоглож дуусгалаа. Их гоё болсон тоглоом байна. Уул нь уг тоглоомын тоглох хугацааг 7-оос 8 цаг гэснийг үзвэл би тоглож байхдаа нилээд будилсан нь харагдаж байх шиг байна. Аль эсвэл энэ тоглоомны алдаанаас болсон юм болов уу?
Өмнөх цуврал болох Ойн төгөлийн гүнд (Dive Grove) хэмээх цуврал дээр манай Том Загас (Big Fish)-ынхан бодит хүмүүсийн дүрст бичлэг оруулсан, бас хэргийн газрууд дээр өөрөө явж очдог болсноороо давуу болсон юм. Та бүхэн санаж байгаа байх. Үүнээс өмнөх цувралуудад хэргийн газарт очихдоо газрын зураг дээрээс л сонгоод л оччихдог байсан шүү дээ. Мөн янз бүрийн оньс, бодлогуудаар дүүрэн болж чадсан билээ. Хамгийн гол нь нуугдсан зүйлсүүдийг олж түүнээсээ хэргийн оньсыг тайлан багаж, хэрэгслийг олж авдагаараа ялгаатай болсон билээ.
Манай сүүлд гарсан 13-н гавал бол Ойн төгөлын гүнд цувралын бүх шинжийг агуулсан бөгөөд үүн дээр сэжигтнүүдтэй харилцан ярьдаг болсноороо онцлог болсон юм. Сэжигтэн бүр өөр өөрсдийн зан, сэтгэлийн хөдлөлтэй бөгөөд тэдгээрээс мөрдөгч маань нэмэлт зүйлсүүдийг лавлаж асуух ба сэжигтэн бүр янз бүрийн зан аашаар хариулдаг. Энэ нь яг жинхэнэ мөрдөлт явуулж байгаа юм шиг сэтгэгдэл төрүүлж байсан юм. Гэвч энэ цувралд нуугдсан эд зүйлсийг олохоос илүүтэй оньс, бодлогуудыг бодох, хэргийн сэжүүрийг хайх гэх мэт зүйлс нь илүүтэй байсан юм. Эндээс би юу гэж бодсон вэ? гэвэл энэ хувилбар бол нуугдсан эд зүйлсийг олдог тоглоом биш юм байна гэсэн бодол төрсөн юм. Үүнээс дараачийн цуврал ямар байх вэ? гэдэг улам сонирхол татаж байна.
Уг тоглоомыг тоглож явахдаа нэг зүйлийг ер шийдэж чадахгүй гацсан юм. Даалгавар маань "оньслогдсон хаалгыг онгойлгох аргыг ол" (find way to open trap door) гэж байсан юм. Хэдэн цаг мангуутан дэмий тэнээд тэсгэл алдан Гүүглэ (Google) ахаасаа асуулаа. Гүүглэ ах над хэдэн цахим хуудсыг зааж өгсөн юм. Тэдгээр цахим хуудсуудаас энэ асуудлыг яаж шийдэх вэ? хэмээн асууж гарав. Тэдгээр цахим хуудсуудаас миний адил тоглогчид нэг бус удаа асуусан байсныг мэдэж авлаа. Тэгэхээр зөвхөн над тохиолдсон гацалт биш болох нь тодорхой болов. Тэгээд цааш нь лавлаад байсан манай Том Загасын тоглоом хөгжүүлэгчид маань нэг өчүүхэн зүйл дээр алдаа хийсэн бололтой.
Уг хаалгыг ойнголгохын тулд түүний дэргэд буй жижиг шүүгээнд дутуу байгаа хундагануудыг олж тавих ёстой юм. Гэвч тоглоом маань намайг хаалга онгойлгох арга ол гэснээс биш хундагануудыг тавь гэсэн даалгавар өгөөгүй учир би хундагануудыг авч чадахгүй байлаа. Ингээд тоглоом маань цаашаа явах боломжгүй болов. Энийг засах арга байгааг цааш нь судалснаар мэдэв. Тэр нь юу вэ? гэвэл
C:\Documents and Settings\<user name>\Application Data\Big Fish Games\Mystery Case Files 13th Skull CE\Master Detective.profile
Гэсэн файлд манай тоглоомны явц маань бичигддэг юм байна. Уг файлаас тийм даалгавар биелэгдсэн эсэх, тийм хэрэгсэл байгаа эсэх гэсэн бөөн параметрүүд байх юм. Гол зорилго маань тэрхүү оньслогдсон хаалгыг онгойлгох аргыг ол гэсэн даалгаварыг биелэгдсэн болгож засах ёстой юм. Хэрэв тэгж засвал бидний дараачийн даалгавар нь хундагануудыг олох байх бөгөөд хундагануудыг олж шүүгээнд тавьснаар манай хаалга онгойх ёстой.
Хаана засвар хийх ёстой вэ? гэвэл уг profife файлаа notepad-аар нээнэ. Аан тийм нээхээсээ өмнө тоглоомоо гаргах хэрэгтэй. Тэгээд уг файлаасаа
<stage>
<name>OpenTrapDoor</name>
<complete>false</complete>
</stage>
Гэсэн мөрийг хайж олоод
<stage>
<name>OpenTrapDoor</name>
<complete>true</complete>
<completetriggered>true</completetriggered>
</stage>
Болгож өөрчилж хадгална. Тэгээд тоглоомоо шинээр эхлүүлэхэд та уг даалгаварыг биелүүлчихсэн, танд дараачийн даалгаварыг өгөх болно. Энэ бол манай Том Загасын ах нарын хийсэн бяцхан сэтгэлгээний алдаа байлаа.
За энүүгээр ч цаашаа нээх асуудалгүй юм. За тэгээд хамаагүй тэр файлаа хамаагүй оролдвол та тоглоомоо хэзээ ч дуусгахгүй нөхцөл байдлыг ч бий болгох магадлалтай тул битгий оролдоорой гэж зөвлөе. Яагаад гэвэл манай даалгаварууд маань цуварч гардаг бөгөөд даалгавар бүрт тодорхой эд зүйлс нь идэвхжиж, өөр даалгаварт идэвхжихээ больдог. Тиймээс хийж чадахгүй байгаа даалгавараа ийм маягаар хийсэн болгочихвол уг даалгавараас авах эд зүйлс чинь танд байхгүй байх болох тул та дараачийн даалгавараа хийж чадахгүй болно.
Аан тийм бас нэг алдаа ч гэх үү? Аль эсвэл би учрыг нь олж чадахгүй байсан уу? бүү мэд ер шийдэж чадахгүй нэг асуудал гарсан юм. Уг даалгавар бол хаалганы цаанаас ярьж байгаа хүний яриаг сонсох юм. Энгийнээр ярьж байгаа нь сонсогдохгүй учир шилэн хаягыг хаалганд тулгаж сонсох ёстой юм байна л даа. Харамсалтай нь тэрхүү шилэн аягыг олдоггүй. Дахиан Гүүглэ ахаас асуусан бөгөөд над хаана байгааг нь зааж өглөө. Харамсалтай нь тэр газарт би өнөөх шилэн аягаа олсонгүй. Хэдэн цаг бас мангуутаж байгаад өнөөх файлаа засаад үзвэл яадаг юм бэ? гэсэн бодол төрлөө. Өмнөх шиг уг даалгаварыг хийсэн болгож өөрчилж болохгүй юм. Яагаад гэвэл уг утасны ярианаас компьютерт нэвтрэх нууц үг хаана байгааг мэдэх ёстой бөгөөд энэ даалгаварыг биелүүлэхгүй бол нууц үг байгаа газар идэвхжихгүй юм. Тиймээс компьютерийн нууц үгээ авч чадахгүй болно. Гэвч надад өнөөх шилэн аяга байдаггүй. Тиймээс өнөөх профайлаа ухлаа. Тэгээд тэндээсээ уг даалгаварыг биелүүлэхэд шилэн аяга байх эсэх дээр нь үгүй (false) гэсэн утга байхыг харлаа. Энэ параметрийг тийм (true) болгож өөрчлөөд тоглоомруугаа орсон чинь шилэн аяга гараад ирж байна шүү. Үүнээс өөр алдаа гараагүй бөгөөд цааш нь үргэлжлүүлэн тоглосоор тоглоомоо дуусгалаа.
Subscribe to:
Posts (Atom)








