How to program Star PATTERNS in JAVA ( part 2 )
ඇත්තටම exam එක්ක ටිකක් හිරවුන නිසයි තව පොඩි පොඩි ප්රශ්න ටිකකුයි නිසා තමයි දෙවෙනි කොටස දාන්න මෙච්චර පරක්කු වුනේ.. ඇත්තටම පරක්කු වුන එකට sorry වෙන්න ඕන.. කට්ටියම එහෙනම් තනියම තරු රටා print කරන්න try කරලා එන්න ඇති කියලා හිතනවා.. අද අපි බලමු කොහොමද ඒ ටික print කරන්න program එකක් හරියටම තනියම හිතාගන්නෙ කියලා.. ආපහු පාරක් මතක් කරනවා හිතන විදිය පුරුදු වෙන්න code කටපාඩම් කරන්නනම් එපා කිසිම තේරුමක් වෙන්නෙ නෑ.. අපි කෙලින්ම වැඩේට බහිමුකො..
මෙන්න මේ ටික තමයි අපි print කරන්න යන්නෙ..
මුල්ම තරු රටාව විදියට අපිට තියෙන්නෙ තනි තරුවක්නෙ.. ඉතිං කට්ටිය බලනවා ඇති මේකෙ මොන රටාවක්ද කියලා නේද? ඔහොමම ඉන්නකො.. එතකොට තේරෙයි ඒකෙන් පටන් ගන්නෙ ඇයි කියලා.. එහෙනම් අපි ඒකට ලියන code එක මුලින්ම බලමුකො..
මේකෙ ඇත්තටම කාටවත් හිතන්න කියලා ප්රශ්නයක්නම් නෑනෙ ඉතින්, එක තරුවක් print කරන්න print statement එකක් ලියන්න විතරයි තියෙන්නෙ.. ඊළඟට අපි එහෙනම් බලමු තරු 5 හේ පේළිය එක print statement එකකින් ලියන්නෙ කොහොමද කියලා..
පොඩ්ඩක් කල්පනා කරලා බැලුවම ඒ රටාව ඇතුලෙ තියෙන්නෙ අර තනි තරුව වගේම 5ක් නේද..? ඉතින් එහෙම තනි තරුව වගේම 5ක් නම් මෙතන තියෙන්නෙ අපිට පුළුවන්නෙ තනි තරුවක් print කරන්න ලියපු code එක 5 පාරක් ලියලා මේක ගන්න.. ඇත්තටම පුළුවන් ඒත් අපිට ප්රශ්නෙ තියෙන්නෙ print statement එකක් විතරක්නෙ use කරන්න වෙන්නෙ.. දැන් ඉතින් කට්ටියට මතක් වෙන්න ඕන මොකක් හරි දෙයක් කිසියම් නිශ්චිත වාර ගනනක් run කරවන්න නම් මොකක්ද use කරන්න වෙන්නෙ කියලා.. මතක කට්ටියට නම් ඔලුවට එනවා ඇති for loop එක තමයි use කරන්න ඕන මෙතනදි කියලා.. හරියටම for loop එක run වෙන විදිය මතක නැත්නම් පොඩ්ඩක් බලලා එන්න මොකද එහෙම නැති වුනොත් මේකත් තෙරෙන්නෙ නැතුව යයි..
දැන් එහෙනම් අපි බලමු කොහොමද for loop එක use කරලා ඒ රටාව ගන්නෙ කියලා..
මෙතනදි අර තනි තරුව print කරන්න ලියපු code එක 5 පාරක් run කරවන්න කියලා for loop එකක් දාලා කියලා තියෙනවා. පේනවා නේද අපිට තනි තරුවක් print කරන එක ඕන වුනේ ඇයි කියලා? මෙතනදි කරලා තියෙන්නෙ ඒ තනි තරුවට ලියපු code එක 5 පාරක් run කරවන්න කියලා loop එකක් දාපු එක..
දැන් ඊළඟට අපි බලමු කොහොමද 5*4 කොටුව හදන්නෙ කියලා..
දැක්කා නේද? මෙතන තියෙන්නෙ මොකක්ද? අපි අර කලින් ගහපු තරු 5 හේ රටාව වගේ 4 ක් නේද? එහෙනම් අපිට කරන්න තියෙන්නෙ මුලින්ම තරු 5 හේ පේළිය print වෙන්න statements ලියලා ඒ තරු 5 print වෙන code set එක තව 4 පාරක් loop කරවන්න නේද? එහෙනම් අපි බලමු කොහොමද ඒක කරන්නෙ කියලා..
මේකෙ අංක 2 දාලා තියෙන for loop එකෙන් වෙන්නෙ හරහට තියෙන තරු 5 print වෙන එක. ඒ කියන්නෙ ඇතුලෙ තියෙන for loop එක ලියන්න ඕන column ගානට.. එළියෙ තියෙන අංක 1 දාපු for loop එකෙන් වෙන්නෙ පහළට යන එක.. ඒ කියන්නෙ rows ගාන ගැන කියවෙන්නෙ මේකෙන්.. මේ for loop එකේ size එක වෙන්නෙ අපිට පහළට ඕන rows ගණන.. දැන් ඉතින් හිතුනට මෙහෙම code එක ලිවුවම ලස්සනට උඩ තියෙන විදියටම print වෙයි කියලා ඇත්තටම print වෙන්නෙ මෙන්න මේ විදියට..
අවුල් වගේ නේද? එහෙම එක පේළියකටම print වුන හේතුව කියලා දෙන්න කලින් terminal එකේ print වෙන හැටි හරියටම තේරුම් ගන්න මේක බලලම එන්නකෝ..
ඒක බැලුවනම් දැන් තේරෙනවා ඇති ඇයි එහෙම උනේ කියලා.. ඇත්තටම අපි තරු 5ක් print වෙන codes 4 පාරක් loop කරවලා තියෙන නිසා රූපෙ පේන විදියට තරු 5 හේ ඒවා 4ක් print වෙලා තියෙන්නෙ. ඒත් හැබැයි අපිට වෙන්න ඕන තරු 5ක් print වුනාට පස්සෙ අළුත් line එකකට ගිහින් අනිත් තරු 5 print වෙන්නනෙ.. එහෙනම් අපි දැන් කරන්න ඕන තරු 5ක් print වුනාට පස්සෙ cursor එක අළුත් line එකකට යවන එක.. දැන් එහෙනම් බලමු අපි අළුත් line එකක් print කරන්න ලියන System.out.println(""); code එක කොතනද ලියන්න ඕන කියලා..
අපිට අළුත් line එකකට යන්න ඕන වෙන්නෙ තරු 5හේ පේළි එකක් ඉවර වුනාට පස්සෙ නිසා තමයි මෙහෙම ඒ තරු 5 print කරන for loop එක ඉවර වුනාට පස්සෙ අළුත් line එකකට යන statement එක ලියලා තියෙන්නෙ..
ඒකත් තේරුම් ගත්තා නම් අපි දැන් ඊළඟට බලමු කොහොමද අපේ ඊළඟ රටාව print කරන්න හිතන්නෙ කියලා.. මෙන්න මේක තමයි අපිට ඊළඟට තියෙන්නෙ..
මේකෙනම් ටිකක් විතර හිතන්න දෙයක් තියෙනවා.. මුලින්ම තේරෙන්න ඕන දේ තමයි පහළට තියෙන row ගානට එක for loop එකකුයි දකුණට තියෙන column ගානට ඒක ඇතුලෙ තව for loop එකකුයි ලියන්න වෙනවා.
ඊළඟට බැලුවම තේරුම් ගන්න ඕන දේ තමයි කලින් 5*4 රටාවෙදි වගේ මේකෙ හැම row එකකම තරු 5ක් නෙවෙයි තියෙන්නෙ.. ඉතින් අපිට දැන් ප්රශ්නයක් එනවා එහෙනම් කොහොමද column ගානට ලියන for loop එකේ size එක තීරණය කරන්නෙ කියලා. තව ටිකක් හොඳට බැලුවමනම් තේරුම් ගන්න පුළුවන් මේ හරහට තියෙන තරු ගණන row ගාන එක්ක සම්බන්ධයක් තියෙනවා කියලා. පළවෙනි පේළියෙදි එක තරුවයි. දෙකේදි දෙකයි, තුනේදි තුනයි, හතරදෙි හතරයි, පහේදි පහයි.. අන්න ඒක නිසා අපි තීරණය කරනවා ඇතුලෙ for loop එකේ size එකට එළියෙ for loop එකෙන් සම්බන්ධ කරන්න වෙනවා කියලා.. දැන් එහෙනම් අපි බලමු කොහොමද ඒ සම්බන්ධෙ හරියටම දෙන්නෙ කියලා.
ආපහු පොඩ්ඩක් මේ 5*4 රටාවෙ code එක බලලම ඉන්නකො.. මේකෙ හරහට තියෙන තරු ගාන හැම තිස්සෙම 5ම නිසා තමයි ඇතුලෙ තියෙන for loop එකේ size එක විදියට 5 දීලා තියෙන්නෙ.. ඒත් දැන් අපිට තියෙන්නෙ එහෙම නියත අගයක් නෙවෙයි නිසා අපිට ඒ අදාළ row එකට අදාළව ඇතුලෙ for loop එකේ size එක හිතලා දෙන්න වෙනවා..
දැන් පේනවා නේද ඇතුලෙ for loop එකේ size එක විදියට අපි දැන් දීලා තියෙන්නෙ row එකේ ඒ run වෙන වෙලාවට තියෙන row value එක.. හැබැයි මෙතනදි පොඩි ප්රශ්නයක් තියෙනවා.. පළවෙනි පාර code එක run වෙනකොට j ගෙ අගය 0 යි නේ? හැබැයි ඇතුලෙ for loop එකේ condition එකේදි i කුඩායි 0 කියන එක i ත් 0 නිසා false වෙනවා.. ඒක නිසා පළවෙනි අවස්ථාව මගහැරිලා තරු පේළි 3යි වදින්නෙ.. ( පළවෙනි එක නිකම්ම false වෙලා තරු print වෙන්නෙ නැති නිසා.. )
මුල්ම සැරෙත් condition එක true වෙන්න ඕන නිසා අපි condition එක i කුඩා හෝ සමානයි j කියලා දැම්මොත් හරි නේද? එතකොට 0 සමානයි 0 කියන එකත් true වෙන නිසා කිසිම ප්රශ්නයක් වෙන්නෙ නෑ.. දැන් එහෙනම් එන්න ඕන හරිම code එක බලමුකෝ..
දැන් ප්රශ්නෙ හරි නේද? පළවෙනි පේළියෙදි එක පාරයි ඇතුලෙ for loop එක run වෙන්නෙ. ඒක නිසා එක තරුවයි print වෙන්නෙ. ඒක Print වෙලා අළුත් line එකකට යනවා. ඊට පස්සෙ දෙපාරක් condition එක true වෙන නිසා තරු දෙකක් print වෙනවා. පස්සෙ තරු 3යි, ඊට පස්සෙ තරු 4 යි.. දැන් තේරෙනවා නේද ඒ රටාව හරියටම හිතලා ගන්නෙ කොහොමද කියලා?
දැන් එහෙනම් අපිට තියෙන අන්තිම රටාවත් බලලම ඉමුකෝ..
මේකෙත් කලින් රටාවෙ වගේම පහළට තියෙන row එක මත දකුණට තියෙන තරු ගණන තීරණය වෙනවා.. හැබැයි හරහට හිටින්නෙ මේකෙ මුලින්ම space වගයක් තියෙන එකනේ.. මාර වැඩේ තමයි. දැන් කට්ටිය හිතනවා ඇති space නැති වුනානම් nothing කියලත් නේද? ඇත්තටම එහෙම වුනානම් මේකත් කලින් රටාවම වෙනවානේ..
දැන් ඉතින් අපි space ටික ගහගන්න ඒකෙ රටාවක් හොයාගන්න ඕන.. ටිකක් හොඳට බැලුවනම් පේනවද එතනත් රටාවක් තියෙනවා කියලා..?
පේනවද spaces වලත් මොකක්ම හරි රටාවක් තියෙනවා.. පළවෙනි එකේදි space 4යි, දෙකේදි 3යි, තුනේදි 2යි, හතරෙදි 1යි, පහේදි 0යි.. බලාගෙන ගියාම එතන size එක එන්නෙ row ගානෙන් අදාළ row එක අඩු කරාම නේද?
පළවෙනි එකේදි space 5 - 1 = 4 යි..
දෙකේදි space 5 - 2 = 3 යි..
තුනේදි space 5 - 3 = 2 යි..
හතරෙදි space 5 - 4 = 1 යි..
පහේදි space 5 - 5 = 0 යි..
රටාව හරි නේද? දැන් ඊළඟට තේරුම් ගන්න ඕන දේ තමයි එක පේළියක් සලකද්දි මුලින්ම space print වෙලා ඊළඟට තරු print වෙලා තමයි අළුත් line එකකට යන්නෙ කියන එක.. දැන් එහෙනම් අපි බලමුකො මුලින්ම space ටිකට විතරක් කොහොමද code එක එන්නෙ කියලා..
මෙතනදි පේනවා නේද මුලින්ම initial value එක විදියට maximum row එකෙන් එකක් අඩු කරලා (5-1 = 4) 4 තමයි දාලා තියෙන්නෙ.. පස්සෙ condition එක විදියට ඒ loop එකේ value එකෙන් (k) අදාළ row එක අඩු කරනවා. for loop එකක් run වෙන විදිය පොඩ්ඩක් බලලා එන්න එතකොට හොඳටම තේරෙයි..
දැන් එහෙනම් අපි space ටිකත් හරියටම print කර ගත්ත නිසා දැන් සම්පූර්ණ code එකම බලමුකෝ..
තේරුනා නේද හිතන විදිය..? ඉතින් හරියට තේරුම් ගන්නවනම් කිසිම අමාරුවක් නෑ මේවයේ.. එක්කෙනෙක්ට හරි පොඩි idea එකක් හරි මේකෙන් ගන්න පුළුවන් වුනා නේද? මම එහෙම හිතනවා.. එක්කෙනෙක් හරි වැඩක් ගත්තොත් මට ඒ ඇති.. එහෙනම් පුරුදු වෙන්නත් එක්ක තව try කරලා බලන්න pattern ටිකක් දෙන්නම්කො එහෙනම්..
ඔන්න එහෙනම් කට්ටිය හිතන විදිය හොඳටම පුරුදු වෙන්නත් එක්ක මේ ටිකත් තනියමම කරන්නකෝ.. මතක තියාගන්න program කරන්න නම් අපිට ඒකේ රටාවක් හොයාගන්න වෙනවා මුලින්ම..
එහෙනම් තරු රටා ගැන මෙතනින් ඉවර කරනවා.. අපි ඊළඟ දවසේ අපිට කලින් කියන්න බැරි වුන java වල විශේෂ වුන loop එක, for-each loop එක ගැනයි තව වැදගත් කොටස් ටිකකුයි එක්ක ඉක්මනටම හමුවෙමු.. එහෙනම් එතකන් ජය වේවා !!
මතුසම්බන්ධයි...
wade gindara..digatama karamu..
ReplyDeletethanks kollo.. එකෙන්ම දිගටම කරනවා.. :-)
DeleteStar 5x4 eke machan print dunnama nonstop pahalata yanawane patta row godakk..apita ona tikata wada enawane
DeleteThis comment has been removed by the author.
ReplyDeleteඅන්තිම pattern එකේ 2වෙනි පේලියට
ReplyDeletefor(int k = 4-j;k>0;k--){} දැම්මත් හරිනේ
yep
Deleteela ela
ReplyDeletethnxs bro
ReplyDeletethanks
ReplyDeleteThanks
ReplyDeleteela ela...digatama karamuuuuuuuuuuuuuu
ReplyDeleteela. digatama karanna
ReplyDeletelassnai wade..digatama karagena yanna
ReplyDeleteNiyamai.thanks aiye.ela.
ReplyDeletegood job
ReplyDeletepatta bn,Supiri explanation eka
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteExcellent
ReplyDeleteAiye meke 1st aka khomd krnne.
ReplyDeleteMt therum ganna amarui
last star print eka poddak wage aul terenne na aiye,,
ReplyDeleteThanks aiya
ReplyDeleteThanks ayye. Niyameta theruna.. man me serama thaniyama try kara, ayya kiyala dipu widiyata hithala. godak pin ayyata..
ReplyDelete3 weni pattern eka poddk kyl dennko
ReplyDeletethank you....
ReplyDeleteclass First{
ReplyDeletepublic static void main(String args[]){
int x;
int y;
for(x=0;x<4;x++){
for(y=3;y>x;y--){
System.out.print(" ");
}
for(y=0;y<=x;y++){
System.out.print("* ");
}
for(y=0;yx;y--){
System.out.print("* ");
}
for(y=2;y>x;y--){
System.out.print("* ");
}
System.out.println("");
}
}
}
import java.io.*;
ReplyDeletepublic class india
{
public static void main(String[] args) throws Exception
{
String obfs="TFy!QJu ROo TNn(ROo)SLq SLq ULo+UHs UJq TNn*RPn/QPbEWS_JSWQAIJO^NBELPeHBFHT}TnALVlBLOFAkHFOuFETpHCStHAUFAgcEAelclcn^r^r\\tZvYxXyT|S~Pn SPm SOn TNn ULo0ULo#ULo-WHq!WFs XDt!";
int x = 10, y = 0, z = 10;
x = obfs.charAt(y);
while (x != 0)
{
if (y < 170)
{
x = obfs.charAt(y);
y++;
while(x > 64)
{
x--;
if(++z == 'Z')
{
z /= 9;
System.out.print((char)(z));
}
else
System.out.print((char)(33 ^ (y & 0x01)));
}
}
else
break;
}
System.out.println("\n");
}
}
thanks saho hodata theuna
ReplyDelete