Linked List ในภาษา C 

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

typedef struct Nodex
{
int data;
Nodex* next;
} Node ;
typedef struct List
{
int size;
Node * head;
} LinkedList;

void addFirst(LinkedList* ll , int data )
{
if(ll->head == NULL)
{
ll->head = (Node*)malloc(sizeof(Node));
ll->head->data = data;
ll->head->next = NULL;
}
else
{
Node * n= (Node*)malloc(sizeof(Node));
n->data = data;
n->next = ll->head;
ll->head = n;
}
ll->size ++;
}

void addLast(LinkedList* ll , int data )
{
if(ll->head == NULL)
{
ll->head = (Node*)malloc(sizeof(Node));
ll->head->data = data;
ll->head->next = NULL;
}
else
{
Node * n= (Node*)malloc(sizeof(Node));
n->data = data;
n->next = NULL;
Node * k = ll->head;

while(k->next != NULL)
{
k=k->next;
}

k->next = n;
}
ll->size ++;
}

void insert(LinkedList* ll , int data,int at)
{
if(ll->head == NULL)
{
if(at ==0 )
{
ll->head = (Node*)malloc(sizeof(Node));
ll->head->data = data;
ll->head->next = NULL;
}
}
else
{
Node * k = ll->head;
int i=0;
while(k->next != NULL&& i < at-1)
{
k=k->next;
i++;
}
Node * n= (Node*)malloc(sizeof(Node));
n->data = data;
n->next = k->next ;
k->next = n;
}
ll->size ++;
}

void print(LinkedList* ll)
{
Node * k = ll->head;
int i=0;
while(k != NULL)
{
printf(" [%d]-> ",k->data, k->next );
k=k->next;
i++;
}
printf("\n");
}
void removeLast(LinkedList * ll)
{
if(ll->head == NULL) return;
if(ll->size == 1)
{
free (ll->head);
ll->head = NULL;
ll->size --;
return;
}
Node * k = ll->head;
int i=0;
while(k->next->next != NULL )
{
k=k->next;
i++;
}
free (k->next);
k->next = NULL;
ll->size --;

}


void sort(LinkedList * ll)
{
if(ll->head == NULL) return ;
int s = ll->size;
int i = 0 ;
int m;
for(;i < s ; i++)
{
Node * k = ll->head;
int j=0;
while(k->next != NULL && j < s- i )
{
if( k->data > k->next->data)
{
m = k->data;
k->data = k->next->data;
k->next->data = m;
}
k=k->next;
j++;
}
}
}
void removeFirst(LinkedList * ll)
{
if(ll->head == NULL) return;

Node * n= ll->head;
ll->head = ll->head->next;
free(n);

ll->size --;
}

void deleteListAll(LinkedList * ll)
{
while(ll->size > 0 )
{
removeFirst( ll);
}
}

int main(int argc,char* argv[])
{

LinkedList ll;
ll.head = NULL;
ll.size = 0;
addFirst (&ll,5);
addFirst (&ll,15);
addFirst (&ll,3);
addFirst (&ll,4);
addFirst (&ll,2);
addLast (&ll,21);
insert (&ll,40,1);

print (&ll);
sort(&ll);
print (&ll);


deleteListAll(&ll);

return 0;
}





[ view entry ] ( 2793 views )   |  permalink  |  $star_image$star_image$star_image$star_image$star_image ( 3.1 / 1211 )
Face Detection in C# 
มาเขียนโปรแกรม FACE DETECTION ด้วย C# กันเถอะ
จริงๆ ACCORD.VISION (http://accord-framework.net/) อันนี้มันก็คือ Image Processign โดย ใช้ Aforge.NET (http://www.aforgenet.com/) เป็นฐานนะครับ
1 Load Accord.Vision จาก NUGET ตามรูป







2 ใช้ CODE ดังนี้
HaarObjectDetector detector;
HaarCascade cascade = new FaceHaarCascade();
detector = new HaarObjectDetector(cascade, 120);

detector.SearchMode = (ObjectDetectorSearchMode.Default);
detector.ScalingMode = (ObjectDetectorScalingMode.SmallerToGreater);
detector.ScalingFactor = 1.5f;
detector.UseParallelProcessing = true;
detector.Suppression = 2;

Stopwatch sw = Stopwatch.StartNew();
// Process frame to detect objects
Rectangle[] objects = detector.ProcessFrame(bitmap);

sw.Stop();
if (objects.Length > 0)
{
RectanglesMarker marker = new RectanglesMarker(objects, Color.Fuchsia);
bitmap = marker.Apply(bitmap);
}


ผลที่ได้












[ view entry ] ( 1517 views )   |  permalink  |  $star_image$star_image$star_image$star_image$star_image ( 3 / 2480 )
Recursive ใน JAVA สร้าง Sierpinski triangle 

fractal Sierpinski triangle โดยใช้ภาษา JAVA




import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Toolkit;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class TriangleFractal extends JPanel
{
public TriangleFractal()
{
setBackground(Color.black);
}
public void paint(Graphics g)
{
super.paint(g);
for(int i=0;i< 1000000;i++)
{
draw( g, 50, getWidth() - 50, getHeight()-50, getWidth()/2, getHeight()-25);
}
}

public void draw(Graphics g, double n,double w,double h,double x,double y)
{
if(n ==0)
{
g.setColor(Color.green);
g.fillRect((int)(x+Math.random()*w-w/2),(int) (y+Math.random()*h-h/2), 1, 1);
return;
}

double r= Math.random();
if(r < 1.0/3.0)
{
y = y - h /2;

}
else if(r < 2.0/3.0)
{
x = x - w/4;
}
else
{
x = x + w/4;
}
draw( g, n-1, w/2, h/2, x, y);
}
public static void main(String[] args)
{
JFrame fnt = new JFrame();

fnt.add(new TriangleFractal());
fnt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
double width = screenSize.getWidth();
double height = screenSize.getHeight();
fnt.setSize((int)width, (int)height);
fnt.setVisible(true);

}

}



 

จำนวนครั้งของ recursive n=1



จำนวนครั้งของ recursive n=2



จำนวนครั้งของ recursive n=3



จำนวนครั้งของ recursive n=4



จำนวนครั้งของ recursive n=5



จำนวนครั้งของ recursive n=6



จำนวนครั้งของ recursive n=7



จำนวนครั้งของ recursive n=30





EPT








[ view entry ] ( 4370 views )   |  permalink  |  $star_image$star_image$star_image$star_image$star_image ( 2.9 / 420 )
STATE SPACE SEARCH : OX มาเขียนโปรแกรมเล่น OX กันเถอะ 
การ การคิดของ Computer เราจะเขียนให้มันลองทุกกรณี

(ขอ code ทั้งหมดได้ที่ ntprintf@gmail.com หรือมาที่อาคารของเราที่ EXPERT-PROGRAMMING-TUTOR ที่ราชเทวี ได้เลย)

เราจะเรียกการทำแบบนี้ว่า STATE SPACE SEARCH ซึ่งถ้าอยากจะปรับปรุงให้ดีขึ้นอาจจะใช้วิธี branch and bound มาช่วย(ทำให้ทำงานเร็วยิ่งขึ้น) ซึ่งจะกล่าวถึงในโอกาศต่อไป

หวังว่าดูรูปนี้แล้วจะเข้สใจนะครับ



มาดู STEP ต่างๆ ของการเล่นจริงเลยแล้วกัน
Human O ลงก่อน : Computer x ลงทีหลัง

ที่เห็นดำๆเพราะตารางมันซ้อนกันเยอะ





[ view entry ] ( 93 views )   |  permalink  |  $star_image$star_image$star_image$star_image$star_image ( 3 / 385 )
koch snowflake in JAVA เกาะอังกฤษมีความยาวรอบเกาะเท่าไรกันแน่ 

วันนี้เราจะมาเขียนโปรแกรม Recursive กันนะครับ


โดยใช้สิ่งที่เรียกว่า koch snowflake

ความสุดยอดของ koch snowflake คืิอ มีพื้ที่รอบรูปเป็น infinity แต่ พื้นที่จำกัด

ซึ่งเราสามารถพบความมหัสจรรย์นี้ได้ ในเรื่องของ แผนที่ เช่นระหว่าไทย กัมพูชา เราเถียงกันเรื่องใช้แผนที่ 1:200000 หรืออะไรก็ดี คำถามคือความยาวเขตแดนระหว่างไทย กัมพูชามีเท่าไรกันแน่ หรือคำถามที่ว่า ถ้าเราซื้อที่ดินริมหาด ที่ดินริมหาด ส่วนใหญ่ราคาจะขึ้นอยู่กับว่ามีหาดยาวเท่าไร (ติดหาดกี่เมตรนั้นเอง) หรือ คำถามว่า เกาะอังกฤษ มีความยาวรอบรูปเท่าไร เช่นถ้าเรามีเทคโนโลยีที่ที่สามารถวัดแบบไม่ระเอียดเราอาจจะได้ค่าค่าหนึ่ง แต่ถ้าเรามีเทคโนโลยีที่สามารถวัดระเอียดขึ้นไปอีกก็เหมือนกับว่า เราจะมี ความยาวรอบเกาะที่เพิ่มขึ้น และถ้าเราสามารถวัดไปถึงระดับ มิลิเมตร ไม่ยิ่งยาวไปกัยใหญ่เหรอ และ ถ้าวัดไปถึงระดับอะตอมละ

koch snowflake คืออะไรสามารถอ่านเพิ่มเติมได้ที่
http://en.wikipedia.org/wiki/Koch_snowflake






















koch snowflake in JAVA





import java.awt.Graphics;
import java.awt.Graphics2D;

import javax.swing.JFrame;


public class KochSnowFlake extends JFrame
{
private static final long serialVersionUID = 1L;

int num=1;

public KochSnowFlake()
{
setSize(600, 600);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);

Thread t= new Thread(new Runnable()
{

@Override
public void run()
{
while(true)
{
for(int i=1;i<= 10;i++)
{
try
{
Thread.sleep(6000 );
} catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
num=i;

repaint();

}
}

}
});
t.start();

}

public void paint(Graphics g)
{
super.paint(g);
Graphics2D gg=(Graphics2D)g;

Vector now= new Vector(getWidth() / 5.0, getHeight()/3.0*2.0);
Vector dir_with_size= new Vector(getWidth() /5.0*3.0, 0);
dir_with_size= dir_with_size.rotate(Math.PI/3);
createSnowFlake( gg , now, dir_with_size, num);

now= now.add(dir_with_size);
dir_with_size= dir_with_size.rotate(-Math.PI/3*2);
createSnowFlake( gg , now, dir_with_size, num);

now= now.add(dir_with_size);
dir_with_size= dir_with_size.rotate(-Math.PI/3*2);
createSnowFlake( gg , now, dir_with_size, num);

}
public void createSnowFlake(Graphics2D g , Vector now,Vector dir_with_size,int n)
{
if(n==0) return;

if(n==1)
{
Vector a,d;
a = now;
d = dir_with_size.add(now);
g.drawLine((int)a.x,(int)a.y, (int)d.x,(int)d.y);
return;
}
Vector a,b,c,d;
a = now;
b = dir_with_size.mul(1.0/3.0).add(now);

c = dir_with_size.mul(2.0/3.0).add(now);
d = dir_with_size.mul(1).add(now);


Vector dir_with_size2= dir_with_size.rotate(Math.PI /3.0).mul(1.0/3.0);
Vector start3 = dir_with_size2.add(b);
Vector dir_with_size3= c.sub(start3) ;

createSnowFlake( g , b, dir_with_size2, n-1);
createSnowFlake( g , start3, dir_with_size3, n-1);

createSnowFlake( g , a, dir_with_size.mul(1.0/3.0), n-1);
createSnowFlake( g , c, dir_with_size.mul(1.0/3.0), n-1);

}

public static void main(String[] args)
{
new KochSnowFlake();

}

}


class Vector
{
public double x,y;
public Vector(){}
public Vector (double xx,double yy)
{
x=xx;
y=yy;
}
public Vector rotate(double angle)
{
double xx,yy;
double c = Math.cos(angle);
double s = Math.sin(angle);

xx = x*c + y*s;
yy = -x*s + y*c;


return new Vector(xx,yy);
}

public Vector mul(double m)
{
return new Vector(x*m,y*m);
}

public Vector add(Vector v)
{
return new Vector(x+v.x,y+v.y);
}
public Vector sub(Vector v)
{
return new Vector(x-v.x,y-v.y);
}
}



[ view entry ] ( 8919 views )   |  permalink  |  $star_image$star_image$star_image$star_image$star_image ( 3 / 2487 )

<<First <Back | 1 | 2 | 3 | 4 | 5 | Next> Last>>