Finished RecursiveExrcise

This commit is contained in:
Siwat Sirichai 2020-11-03 14:20:20 +07:00
parent bfd2e95a10
commit c88ac94cc1
7 changed files with 372 additions and 1 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -2,7 +2,7 @@
public class MotzkinNumber { public class MotzkinNumber {
public static void main(String[] args) { public static void main(String[] args) {
for(int i=0;i<=20;i++)System.out.format("%d:%d\n",i,M(i)); for(int i=0;i<=20;i++)System.out.format("%d:%d%n",i,M(i));
} }
public static int M(int n) { public static int M(int n) {

View File

@ -0,0 +1,53 @@
import java.util.Arrays;
public class MyArrayUtil {
// return the first data inside the array.
public static int head(int[] a) throws Exception {
if (a == null)
throw new Exception("Array is empty! No head.");
return a[0];
}
// return array similar to a, but without the first data.
public static int[] tail(int[] a) throws Exception {
if (a == null)
throw new Exception("Array is empty! No tail.");
if (a.length == 1)
return null;
return Arrays.copyOfRange(a, 1, a.length);
}
// create a new array that is like array a, but with x inserted at
// the front.
public static int[] addAsFirst(int x, int[] a) {
int[] ans;
if (a == null) {
ans = new int[1];
ans[0] = x;
} else {
ans = new int[a.length + 1];
ans[0] = x;
for (int i = 0; i < a.length; i++) {
ans[i + 1] = a[i];
}
}
return ans;
}
// print array contents out.
public static void print(int[] a) {
if (a == null) {
System.out.println("Array is empty!");
return;
}
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]);
if (i != a.length - 1) {
System.out.print(", ");
} else {
System.out.println(".");
}
}
}
}

View File

@ -0,0 +1,165 @@
import java.util.Arrays;
public class RecursiveExercise {
// return an array that has all data of ht and n,
// just like concatenating ht and n.
public static int[] append(int[] ht, int[] n) throws Exception {
if (ht == null)
return n;
if (n == null)
return ht;
int[] l = append(MyArrayUtil.tail(ht), n);
int head = MyArrayUtil.head(ht);
return MyArrayUtil.addAsFirst(head, l);
}
public static int[] reverse(int[] ht) throws Exception {
// fill your code here
if(ht == null) return null;
if (ht.length == 1)
return ht.clone();
int temp = ht[0];
ht[0] = ht[ht.length - 1];
ht[ht.length - 1] = temp;
return recursiveInnerSandwich(reverse(MyArrayUtil.tail(removeLast(ht, new int[ht.length-1], 0))),ht.clone());
}
//This method make an array sandwich excluding the bread (index 0 and index last)
public static int[] recursiveInnerSandwich(int[] src,int[] dest) throws Exception{
if (src==null)return dest;
dest[dest.length-src.length-1] = src[0];
recursiveInnerSandwich(MyArrayUtil.tail(src),dest);
return dest;
}
//Remove the last element
public static int[] removeLast(int[] ia1,int[] ia2,int i) {
ia2[i]=ia1[i];
if (i==ia2.length-1)return ia2;
return removeLast(ia1,ia2,i+1);
}
public static boolean isIn(int x, int[] a) throws Exception {
// fill your code here
if (a[0] == x)
return true;
if (a.length == 1)
return false;
return isIn(x, MyArrayUtil.tail(a.clone()));
}
public static boolean subArray(int[] a1, int[] a2) throws Exception {
// fill your code here
if (a1 == null)
return true;
if (isIn(a1[0], a2))
return subArray(MyArrayUtil.tail(a1.clone()), a2);
if (a1.length == 1)
return true;
return false;
}
public static int[] shift(int[] ht, int n) throws Exception {
// fill your code here
if(ht==null)return null;
if(n==0)return ht;
int temp = ht[0];
ht = insertLast(temp,MyArrayUtil.tail(ht));
return shift(ht,n-1);
}
public static int[] insertLast(int val,int[] ia) throws Exception{
return reverse(MyArrayUtil.addAsFirst(val, reverse(ia)));
}
public static void main(String[] args) throws Exception {
// test append, when appending empty array with {1,2,3}
int[] a = null;
int[] b = { 1, 2, 3 };
int[] ans1 = append(a, b);
System.out.println("Append - Expected: 1, 2, 3.");
System.out.print("Get: ");
MyArrayUtil.print(ans1);
System.out.println("");
// test append, when appending 2 non-empty arrays.
int[] c = { 1, 2, 3 };
int[] d = { 4, 5, 6 };
ans1 = append(c, d);
System.out.println("Append - Expected: 1, 2, 3, 4, 5, 6.");
System.out.print("Get: ");
MyArrayUtil.print(ans1);
System.out.println("");
// test reverse
int[] e = { 1, 2, 3, 4, 5 };
ans1 = reverse(e);
System.out.println("Reverse - Expected: 5, 4, 3, 2, 1.");
System.out.print("Get: ");
MyArrayUtil.print(ans1);
System.out.println("");
// test isIn
boolean b1 = isIn(3, e);
System.out.println("isIn - Expected: true.");
System.out.println("Get: " + b1 + ".");
boolean b2 = isIn(7, e);
System.out.println("isIn - Expected: false.");
System.out.println("Get: " + b2 + ".");
// test subArray
int[] f = { 1, 3, 5 };
int[] g = { 1, 2, 3, 4, 5 };
int[] h = { 1, 2, 3, 4, 5 };
int[] i = null;
int[] j = { 1, 4, 5 };
b1 = subArray(f, g);
System.out.println("subArray - Expected: true.");
System.out.println("Get: " + b1 + ".");
b1 = subArray(g, h);
System.out.println("subArray - Expected: true.");
System.out.println("Get: " + b1 + ".");
b1 = subArray(i, h);
System.out.println("subArray - Expected: true.");
System.out.println("Get: " + b1 + ".");
b1 = subArray(f, j);
System.out.println("subArray - Expected: false.");
System.out.println("Get: " + b1 + ".");
b1 = subArray(h, j);
System.out.println("subArray - Expected: false.");
System.out.println("Get: " + b1 + ".");
// test shift
int[] k = shift(g, 3);
System.out.println("shift - Expected: 4, 5, 1, 2, 3.");
System.out.print("Get: ");
MyArrayUtil.print(k);
System.out.println("");
k = shift(g, 2);
System.out.println("shift - Expected: 3, 4, 5, 1, 2.");
System.out.print("Get: ");
MyArrayUtil.print(k);
System.out.println("");
k = shift(g, 8);
System.out.println("shift - Expected: 4, 5, 1, 2, 3.");
System.out.print("Get: ");
MyArrayUtil.print(k);
System.out.println("");
k = shift(g, 0);
System.out.println("shift - Expected: 1, 2, 3, 4, 5.");
System.out.print("Get: ");
MyArrayUtil.print(k);
System.out.println("");
k = shift(null, 5);
System.out.println("shift - Expected: Array empty");
System.out.print("Get: ");
MyArrayUtil.print(k);
System.out.println("");
}
}

View File

@ -0,0 +1,153 @@
Mr. Prem Pattanapitoon
Miss Praewpun Cheevamongkol
Mr. Nutthakom Trongjitraksa
Mr. Trivit Damrongrat
Mr. Pasutha Daichi Ide
Mr. Akarawut Krinukul
Mr. Athichat Chindaudom
Miss Claire Claude Prevost
Miss Nao Komada
Miss Clemence Muriel Berenice Jean-Louis Dit Montout
Miss Kim Zaatar
Mr. Jules Joseph Jean-Claude Victor Lestrade
Miss Noor Kardache
Miss Marie Charlotte Josephine Leygue
Mr. Marin Neyret
Miss Alice Francoise Lucienne Cabane
Mr. Adrien Manhieu Zychowski
Miss Aurore Marie Garrigoux-Desmoulins
Miss Charlotte Roppelt-Saint-Lebe
Mr. Pierre Antoine Claret
Mr. Louis Pierre Nouguerede
Miss Annika Ulrike Glaseke
Mr. Kornrapee Suthicharoenpanich
Mr. Krittanut Mongkolkulsat
Mr. Krittapat Onthuam
Mr. Krittapak Udompanich
Mr. Krittaphat Maiklad
Mr. Krittawat Archathawan
Mr. Kritasak Udompongsanont
Mr. Krittin Punpermcharoenkit
Mr. Krit Uthaisang
Mr. Gawin Lohaburananont
Miss Kavisara Jantarakolica
Mr. Kasidit Pratumtin
Mr. Kongpop Panya
Mr. Korpoj Piya-asdarat
Mr. Gunn Kanchanaraksa
Mr. Kan Jitpakdi
Mr. Karnthiti Thitikarn
Mr. Chris Vataniyapramote
Miss Kunanya Vuthilertdacha
Mr. Ken Kanate Wichiramala
Mr. Krit Sanguannapaporn
Mr. Chongchate Kumpeerichaya
Mr. Jomphat Itsarawisut
Mr. Jakkaphan Ekrojrattana
Mr. Jamorn Wacharasing
Miss Jinnipha Bhumtakwong
Mr. Jitrabhanu Simaraks
Mr. Jeerapat Thansuwanwong
Mr. Jade Udomkittivorakul
Mr. Jenwit Ratanapusdeekul
Mr. Chatr Tharachatr
Mr. Chonlasit Thangkasemsan
Mr. Chanon Wanasinchai
Mr. Chitipat Trachu
Mr. Chuwong Kulrattanarak
Mr. Athichat Chindaudom
Miss Claire Claude Prevost
Miss Nao Komada
Miss Clemence Muriel Berenice Jean-Louis Dit Montout
Miss Kim Zaatar
Mr. Jules Joseph Jean-Claude Victor Lestrade
Miss Noor Kardache
Miss Marie Charlotte Josephine Leygue
Mr. Marin Neyret
Miss Alice Francoise Lucienne Cabane
Miss Chotika Truengjitvilas
Mr. Chotipat Chaiyarat
Mr. Nakrit Panjasanka
Mr. Nachanon Rimsmutchai
Mr. Naphat Pattayanun
Mr. Napat Suwansujira
Mr. Napat Asavarojkul
Mr. Natthakit Kitrueangphatchara
Mr. Natchanon Auewetchanichkul
Mr. Natthorn Suwannapasri
Miss Nutthawadee Sungvonwattana
Mr. Nattawat Chongpita
Mr. Nattawat Pornthisan
Mr. Natthawat Piyanonthaya
Mr. Nuttawut Janwimaluang
Mr. Nat Sakdasak
Mr. Thinteerachot Hansnontchot
Mr. Tinnawish Tungphitukkul
Mr. Taksin Faikhao
Mr. Thanthai Udcharchon
Mr. Tanaseth Julerttrakul
Mr. Thanachot Sappakit
Mr. Thanatath Jiravanich
Mr. Dhanabordee Mekintharanggur
Mr. Tanabodee Wanitnunttada
Mr. Thanapat Pornsirianant
Mr. Tanawat Rattanagowin
Mr. Tanat Sangwong
Miss Tananyapat Wareechuensuk
Miss Thanaree Rongkavilit
Mr. Thatchapan Pianpucktr
Mr. Tatchapol Jetanachai
Mr. Thanyapat Khorporn
Mr. Tanmine Mesatien
Mr. Tissarut Suntreekasem
Mr. Teeratat Bunsantrakul
Mr. Noparuj Tantisoonthorn
Mr. Noppasin Ajchareeyasoontorn
Mr. Norrawee Charnpinyo
Mr. Nantanit Vittayaporn
Mr. Naris Limpapaswat
Mr. Nittun Lertwirojkul
Mr. Patiphol Vongsirisap
Mr. Panoj Kamolrattanawech
Mr. Panidh Mingmalairak
Mr. Pathanin Runggeratigul
Miss Papitchaya Iemtananon
Mr. Papatchol Thientong
Mr. Noppasin Ajchareeyasoontorn
Mr. Norrawee Charnpinyo
Mr. Nantanit Vittayapo
Miss Paphawee Rattanagosol
Miss Prapaluck Pugkhem
Mr. Prapas Arayasaeng
Mr. Prat Prasertsup
Mr. Punn Damrongratnuwong
Mr. Pannaton Kerdkaewfah
Mr. Pannavich Setawanna
Mr. Panud Chamnanratanakul
Miss Pinpinut Teerawesagapawanis
Miss Punyada Jantananont
Mr. Bhunaron Sornklin
Mr. Punnatt Punnotok
Mr. Purapat Rattanatraipop
Miss Premika Prachayamongkol
Mr. Pongpao Nanami Pongponrat
Mr. Pongsapak Sajjapong
Miss Prim Viriyasopon
Mr. Pasin Kanchanarusmeechoti
Miss Pattanun Sangvijitr
Mr. Pitchakorn Watcharodomprasert
Mr. Pirat Pothavorn
Mr. Phawat Borisuitsawat
Mr. Peemapol Tangamonsiri
Mr. Yodsapat Jiravipapan
Mr. Rattanapong Wongcharoensin
Mr. Waritnan Kositcharoensuk
Mr. Sattra Piyapunsutti
Mr. Supphaset Engphaiboon
Mr. Sirapop Rojanakul
Mr. Sukit Sukittanon
Mr. Athit Arsirakarn
Miss Oranich Jamkachornkiat
Miss Unna Talomsin
Miss Reena Lim
Mr. Eisen Lance Tamayao De Guzman