Friday, March 31, 2017

Pintu-pintu REZEKI

Solat lima waktu secara berjemaah
Doa
Solat Dhuha
Istiqamah Baca Al-qurĂ¡n (Al-Waqi`ah)
Rezeki yang ditetapkan
Rezeki yang tak disangka-sangka
Bantu Agama Allah
Iman
Istighfar
Sedekah
Jalin silaturahim
Usaha
Syukur
Nikah
Anak-anak

Tips untuk Skor AddMath

Kertas 1


Kertas 1 ada 25 soalan yang wajib dijawab..
biasanya pattern soalan sama saja.

Soalan no.1 biasanya dari Chapter 1-Function

Soalan no.2 Chapter 2-Quadratic Equation

dan seterus-seterusnya lah.
..(ada juga satu chapter keluar lebih dari 2 soalan)




Empat Chapter ini

 (biasanya tak keluar dalam Paper 1 sebab chapter
 ni soalan pilihan Paper 2)

-Solution Of Triangle

-Index Number

-Motion Along A Straight Line

-Linear Programming



Cadangan


1. Jangan tinggalkan kosong- jawab semua
soalan sehabis baik mengikut kemampuan anda

(sepatutnya tiada masalah untuk 10 soalan pertama
kerana beberapa chapter telah diajar dalam matematik moden juga..)



2. Gunakan scientific calculator yang ada mode equation
(dicadangkan Casio MS570)

- bertujuan untuk menyemak factorization dengan lebih
 mudah kerana factorization untuk quadratic equation

digunakan dalam banyak soalan(*tapi ingat-markah tidak
diberikan sekiranya jalan kerja tidak ditunjukkan-

(calculator untuk tujuan penyemakkan)

- untuk mencari nilai binomial probability distribution
-nilai X dengan lebih mudah tanpa menggunakan buku sifir

4 angka (walaubagaimanapun buku sifir disediakan semasa peperiksaan



3. Markah yang diperuntukkan ada dinyatakan dihujung
setiap soalan..yang terdiri dari 2,3 dan 4 markah. Jawab soalan
 berpandukan markah yang diberi.



4. Formula telah diberikan di hadapan kertas soalan.
.(hampir semua formula)..walaubagaimanapun ia akan
 menjadi hiasan saja kelau anda tidak tahu menggunakan
atau tidak tahu makna simbol..penting untuk anda "mesra"
 dengan formula-formula ini dengan membuat seberapa
 banyak latihan



5. Sekiranya ada dinyatakan dalam soalan contohnya :
 Without using scientific calculator..maksudnya anda
 diminta untuk menunjukkan jalan kerja penuh untuk
 menjawab soalan itu..walau bagaimanapun..anda boleh
menggunakan mesin kira untuk tujuan semakan..



6. Pastikan anda mendapat sekurang-kurangnya
25markah (30/80) untuk kertas 1

7. Secara amnya Kertas 1 sangat membantu anda untuk
 lulus Add Math..pelajar yang biasa mendapat markah
 (60/80 dan ke atas) biasanya boleh mendapat
 A1 atau A2 untuk Add Math, semasa SPM sebenar..(mengikut pengalaman)

Kertas 2


Terdapat 3 Bahagian soalan dalam Kertas 2
..Bahagian A, B dan C (semua sekali 15 soalan..wajib jawab 12)

Anda wajib menjawab semua soalan Bahagian A ((40 markah)
pilih 4 daripada 5 soalan Bahagian B (40 markah)
pilih 2 daripada 4 soalan Bahagian C (20 markah)

sekiranya anda sangat lemah dalam add math
pastikan anda fokuskan kepada soalan-soalan berikut

* Bahagian A -silmultionous equation (biasanya 5 hingga 6 markah-semak factorization guna scintific calculator anda)

* Bahagian B- Linear Law (biasanya soalan no 7)
(buat jadual (sekurang-kurang nya dua tempat perpuluhan )dan
plot graf-5markah..jawab soalan 5 markah)

* Trigonometric Functions (cuba buat graf trigo kerana
graf trigo tidaklah sesusah yg selalu
digambarkan)

* Probability Distributions -pattern soalan biasanya sama saja

Bahagian C - bagi pelajar saya.. saya menyarankan
 mereka memilih tajuk Index Number dan Solution Of Triangle
untuk bahagian ini..kerana..Index Number adalah topik yg mudah.
.dan solution of triangle juga
tajuk yg tidak terlalu sukar..berbanding dengan
Linear Programing(mengambil masa untuk
menjawab..mengintepretasi soalan kepada graf).
.Motion Along a Straight Line (perlu mahir tajuk
differentiation dan integration..dan pelajar
selalu tidak dapat menafsir tajuk dengan baik untk topik
ini)

# PERHATIAN-Untuk Bahagian B soalan-soalan dari
 topik lain yang selalu diuji ialah Coordinate Geometry,
Statistic, Circular Measures, Vector, Differentiation dan Integration

Daripada cadangan saya tadi anggaran markah untuk
 topik2 terpilih tersebut ialah 70/180 (jumlah kertas 1 dan 2)
 peluang untuk anda lulus adalah sangat cerah sekali..
jika anada dapat menambah 10 markah lagi.
.peluang untuk kredit berada di depan mata)

1.Segala cadangan di atas adalah atas pemerhatian
 dan pengalaman (kursus teknik menjawab) yang telah
saya ikuti@alami sendiri..sekiranya anda mempunyai
 guru2 pakar yang dapat memberikan ilmu atau
 strategi menjawab yang lebih baik saya sangat
 mengalu-alukan anda berkongsi dengan saya

2. Sekiranya anda telah pun mempunyai strategi menjawab
 yang lebih baik...dan cadangan di atas tidak memberikan
banyak input malah mengelirukan..ABAIKAN SAJA

3. Sekiranya anda rasa ia membantu dan memerlukan lebih
dari yang ditulis diatas anda boleh bertanya -
akan saya jawab sekiranya mampu...

Sunday, March 26, 2017

List of chapters from Tahun 1 to Tingkatan 5

SELECT 
s.chapter_id, s.subject_id,

 CASE
 WHEN t.edu_year_id=1 THEN 'Tahun 1'
 WHEN t.edu_year_id=2 THEN 'Tahun 2'
 WHEN t.edu_year_id=3 THEN 'Tahun 3'
 WHEN t.edu_year_id=4 THEN 'Tahun 4'
 WHEN t.edu_year_id=5 THEN 'Tahun 5'
 WHEN t.edu_year_id=6 THEN 'Tahun 6'
 WHEN t.edu_year_id=7 THEN 'Tingkatan 1'
 WHEN t.edu_year_id=8 THEN 'Tingkatan 2'
 WHEN t.edu_year_id=9 THEN 'Tingkatan 3'
 WHEN t.edu_year_id=10 THEN 'Tingkatan 4'
 WHEN t.edu_year_id=11 THEN 'Tingkatan 5'
 ELSE 'lain-lain' END as `edu_year`, t.title as Subject, s.title as chapter_title
FROM chapters s
JOIN subjects t ON s.subject_id=t.subject_id

ORDER BY t.edu_year_id ASC, s.chapter_id asc

Tuesday, March 14, 2017

List of algorithms

Algorithm for Structure marking

/*
 * Useful references:
 * https://en.wikipedia.org/wiki/Levenshtein_distance
 * https://en.wikipedia.org/wiki/Vladimir_Levenshtein
 *
 */
namespace App\Libraries;


class ContentMatcher
{

    /*
     *  Will be used independently by any modules
        Returning value : Percentage of matching
        Options
        Case censitive
        Ordered keyword
        Ignore penghubung kata (default)
        Ignore space
        Language : English only, BM only, Any

     */
    /*
     * Return Percentage of matching
     */

    private $cached_word_permutation = [];
    private $non_ordered_keyword_result = [];

    public function evaluate($input_string = '', $arr_scheme = array(), $array_preposition_scheme = array(), $option = array())
    {
        #Trim the input
        $input = trim($input_string);

        #Ignore space, by default not ignore space
        if (isset($option['ignore_space']) && $option['ignore_space'] == 1) {
            $input = str_replace(' ', '', $input_string);
        }

        #Ignore preposition
        if (isset($option['ignore_preposition']) && $option['ignore_preposition'] == 1) {
            $filtered_words = $this->ignore_preposition($array_preposition_scheme, $input);
        } else {
            #By default ignore preposition
            $filtered_words = explode(" ", $input_string);
        }

        #For non ordered keyword
        if (isset($option['ordered_keyword']) && $option['ordered_keyword'] == 0) {
            $this->pc_permute($filtered_words, $arr_scheme);
            $key_result_ordered = array_keys($this->cached_word_permutation, max($this->cached_word_permutation));
            $result = $this->non_ordered_keyword_result[$key_result_ordered[0]];
        } else {
            #By default was ordered
            $result = $this->closest_word($filtered_words, $arr_scheme);
        }


        //P_TODO: How to integrate? Please review
        #Language
        if (isset($option['language']) && $option['language'] == 'EN') {
            //English
        } elseif (isset($option['language']) && $option['language'] == 'BM') {
            //BM
        } else {
            //Any
        }

        //Result
        $output_result['result'] = $result;

        //Option
        $output_result['options'] = $option;

        //Input
        $output_result['input']['input_string'] = $input_string;
        $output_result['input']['arr_scheme'] = $arr_scheme;
        $output_result['input']['array_preposition_scheme'] = $array_preposition_scheme;



        return $output_result;
    }


    //Get all permutation of array
    private function pc_permute($items, $words, $perms = array())
    {

        if (empty($items)) {
            $elements = $perms;
            $merged = array_merge($elements);
        } else {
            for ($i = count($items) - 1; $i >= 0; --$i) {
                $newitems = $items;
                $newperms = $perms;
                list($foo) = array_splice($newitems, $i, 1);
                array_unshift($newperms, $foo);
                $this->pc_permute($newitems, $words, $newperms);
            }
        }

        if (isset($elements)) {
            $this->cached_word_permutation[] = $this->closest_word($elements, $words)['percentage_correct_%'];
            $this->non_ordered_keyword_result[] = $this->closest_word($elements, $words);
        }
    }


    private function ignore_preposition($arr_scheme_preposition = array(), $str_input_string = '')
    {
        $arr_input_string = explode(" ", $str_input_string);

        if (count($arr_scheme_preposition) < count($arr_input_string)) {
            $arr_without_preposition = array_diff($arr_scheme_preposition, $arr_input_string);
        } else {
            $arr_without_preposition = array_diff($arr_input_string, $arr_scheme_preposition);
        }
        return $arr_without_preposition;
    }


    private function closest_word($input_string, $words, &$percent = null)
    {
        $input = implode(" ", $input_string);
        $shortest = -1;
        foreach ($words as $word) {

            $word = trim($word);
            $lev = levenshtein($input, $word);

            if ($lev == 0) {
                $closest = $word;
                $shortest = 0;
                break;
            }

            if ($lev <= $shortest || $shortest < 0) {
                $closest = $word;
                $shortest = $lev;
            }
        }

        $percent = 1 - levenshtein($input, $closest) / max(strlen($input), strlen($closest));

        $output_result['input'] = $input;
        $output_result['exact'] = $shortest == 0 ? 1 : 0;
        $output_result['closest'] = $closest;
        $output_result['percentage_correct_%'] = round($percent * 100, 2);

        return $output_result;
    }


}
To test
 

namespace App\Http\Controllers;

use App\Libraries\ContentMatcher;
use Illuminate\Http\Request;

use App\Http\Requests;

class test extends Controller
{
    public function index()
    {
        $check = new ContentMatcher();


        $input_string = '35';
        $arr_scheme = array('Daya tolakan menggerakkan duit syiling','daya tolakan','Daya tolakan','RM 35','35 je','3.5 je');
        $array_preposition_scheme = array("yang", "bahawa", "untuk", "oleh itu", "oleh kerana", "agar", "meskipun", "sekiranya", "semoga", "supaya", "kalau", "andaikata", "kendatipun", "hingga", "jika", "jikalau", "semasa", "sementara", "setelah", "sewaktu", "ketika", "tatkala", "walaupun", "malahan");

        $options = array(
            'case_sensitive'     => 0,
            'ordered_keyword'    => 1,
            'ignore_preposition' => 0,
            'ignore_space'       => 0,
            'language'           => 'BM'
        );
        $result = $check->evaluate($input_string,$arr_scheme,$array_preposition_scheme,$options);
        pre($result);

    }
}