Trang

Thursday, July 10, 2014

Verbal arithmetic

Verbal arithmetic, also known as alphametics, cryptarithmetic, crypt-arithmetic, cryptarithm or word addition, is a type of mathematical game consisting of a mathematical equation among unknown numbers, whose digits are represented by letters. The goal is to identify the value of each letter. The name can be extended to puzzles that use non-alphabetic symbols instead of letters.
The equation is typically a basic operation of arithmetic, such as addition, multiplication, or division. The classic example, published in the July 1924 issue of Strand Magazine by Henry Dudeney,[1] is:
\begin{matrix}
     &   & \text{S} & \text{E} & \text{N} & \text{D} \\
   + &   & \text{M} & \text{O} & \text{R} & \text{E} \\
 \hline
   = & \text{M} & \text{O} & \text{N} & \text{E} & \text{Y} \\
\end{matrix}
The solution to this puzzle is O = 0, M = 1, Y = 2, E = 5, N = 6, D = 7, R = 8, and S = 9.
Traditionally, each letter should represent a different digit, and (as in ordinary arithmetic notation) the leading digit of a multi-digit number must not be zero. A good puzzle should have a unique solution, and the letters should make up a cute phrase (as in the example above).
Verbal arithmetic can be useful as a motivation and source of exercises in the teaching of algebra.
The secret is to notice that the answer has more letters (5 letters) 
than the question (4 letters).

That M at the beginning of money is a carry from the thousands place, 
so M = 1.  Now we have:

     SEND
   + 1ORE
   -------
  = 1ONEY

Now, in the thousands place there is a 1, so the only value for S that 
could cause a carry is S = 9 and that means O = 10.  Now we have:

     9END
   + 10RE
   -------
  = 10NEY

Now look at the hundreds place. If there were no carry from the tens 
place, E and N would be the same because E+0 = N, but E and N can't be 
the same, so there must be a carry from the tens place.  Now we have:

    1 1    <-- carry
     9END
   + 10RE
   -------
  = 10NEY

Now the equation for the hundreds place is 1+E+0 = N or just 1+E = N. 
In the tens place we can have N+R = E+10 if there is no carry from the 
ones place, or we can have 1+N+R = E+10 if there is.

First test: no carry from the ones place:

N+R = E+10  and  1+E = N
(1+E)+R = E+10
1+R = 10
R = 10-1
R = 9

But S = 9, so R cannot = 9.  That means there is a carry from the ones 
place and we get:

1+N+R = E+10  and  1+E = N
1+(1+E)+R = E+10
2+R = 10
R = 10-2
R = 8

So now we have:

    1 11   <-- carry
     9END
   + 108E
   -------
  = 10NEY

N cannot be 0 or 1 because 0 and 1 are taken.
N cannot be 2 because 1+2+8 = 11 and then E would equal 1, but it 
cannot equal 1 because 1 is taken.
N could equal 3,4,5,6 or 7 but it cannot equal 8 or 9 because 8 and 9 
are taken (and E must be 2,3,4,5 or 6 because it is 1 smaller than N).

If E were 2, then for the ones place to carry D would have to be 8 or 
9, and both 8 and 9 are taken, so E cannot be 2 (and N cannot be 3).

If E were 3, then for the ones place to carry D would have to be 7,8, 
or 9, but D cannot be 7 because then Y would be 0, which is taken, so
E cannot be 3 (and N cannot be 4).

If E were 4, then for the ones place to carry D would have to be 
6,7,8, or 9.  D cannot be 6 because Y would be 0, but D cannot be 7 
because Y would be 1, and 0 and 1 are both taken, so E cannot be 4 
(and N cannot be 5).

The only two possibilities for E now are 5 and 6.

If E were 6, then N would be 7 and D would have to be 4 (which would 
make Y = 0), 5 (which would make Y = 1), 6 (which is taken by E), or 
7 (which is taken by N). There are no solutions for E = 6, so E must 
be 5.

So now we have:

    1 11   <-- carry
     956D
   + 1085
   -------
  = 1065Y

Do the same reasoning for D and Y and get the answer.

If you need more help check out this archived answer:

   Finding the Digits of SEND + MORE = MONEY
   http://www.mathforum.org/library/drmath/view/57968.html 

Sunday, July 6, 2014

Tập hợp(Collections) Java


  • Tập hợp dùng lưu trữ, thao tác trên một nhóm các đối tượng.
  • Các đối tượng của tập hợp có thể thuộc nhiều loại dữ liệu khác nhau
  • Số phần tử trong tập hợp có thể thêm hoặc bớt

  • List
    1. Lưu trữ các phần tử theo thứ tự được thêm vào
    2. Truy xuất các phần tử theo chỉ mục(index)
    3. Các phần tử trong List có thể trùng nhau.
  • Set 
    • Các phần tử trong Set lưu trữ không theo thứ tự đã thêm vào .
    • Không chấp nhận các phần tử trùng.
  1. SortedSet 
    • Thừa kế từ Set
    • Lưu trữ các phần tử th eo thứ tự tăng.
    • Không chấp nhận các phần tử trùng.
  • Queue  
Lớp TreeSet 
  • Lưu giữ liệu theo cấu trúc “cây”.
  • Các phần tử được lưu trữ theo thứ tự tăng dần 
Map 
  • MAP lưu trữ dữ liệu theo từng cặp: khóa – giá trị (key-value)
  • Các giá trị được lấy từ MAP thông qua khóa của nó.
  • Các khóa trong MAP phải duy nhất.

Sunday, June 22, 2014

Cách may mũ vải cho bé điệu đà mùa thu đông và những mẫu mũ đẹp hợp thời trang

Mũ vải hoặc mũ len là một trong những phụ kiện thời trang quan trọng cho bé sử dụng trong những ngày mùa thu đông. Mũ vải dùng trong những ngày trời mát lạnh nhè nhẹ còn mũ len dùng cho bé khi trời trở rét. Để bé luôn xinh xắn khi ra đường dạo phố các mẹ hãy chọn cho bé những mẫu mũ vải thật dễ thương nhé. Sau đây hướng dẫn các mẹ cách may mũ vải cho bé yêu.
Chưa đủ rét để đội mũ len nhưng mỗi sớm và chiều của những ngày giao mùa thu đông này cũng đủ se lạnh, bạn thử cách may mũ vải này để may mũ cho bé nhé!
Nguyên vật liệu cần thiết dùng để may mũ vải cho bé.
may mũ vải cực xinh cho bé 1
Theo 3 cách may mũ vải ấm áp cho bé, bạn cần chuẩn bị những nguyên vật liệu sau đây:
- Vải cotton có chút co giãn, thường là cotton thun, nếu bạn chọn được cotton dệt kim càng tốt.
- Máy may chỉ chập (đường vắt sổ kiêm đường may), nếu chỉ có máy vắt sổ rời thì bạn may xong rồi vắt sổ hai mép biên vải chung một cũng được, nếu chỉ có mỗi máy may hoặc dùng cách khâu tay thì bạn nên dùng cách may lộn.
Kỹ thuật may lộn:
May trên mặt phải, đường biên may to 1cm hoặc to hơn chút xíu.
Cắt giảm nửa biên vải của một lớp vải ngoài đường biên.
Gập đôi biên may to hơn bao kín đường biên may nhỏ hơn.
Ép phần biên vừa gập nằm bẹp sang một bên, bạn nên dùng bàn là để là chết nếp gập cho dễ may.
May sát biên gập, đường chỉ sẽ song song với đường may ban đầu ở mặt phải.
Kết quả bạn sẽ có một đường may lộn có hai đường chỉ song song ở mặt phải, bên mặt trái chỉ lộ một đường chỉ, nhưng mặt vải trơn liền nhau không có đường biên may cộm lên như thông thường.
- Kéo, mẫu giấy: in mẫu bên sao cho độ rộng ngang hình mũ bằng 1/2 vòng đầu của bé chỗ nở rộng nhất. Cắt hình in làm mẫu giấy.
Cách may mũ vải cho bé
may mũ vải cực xinh cho bé 2
Có 3 mẫu mũ cho bạn lựa chọn, mỗi mẫu sẽ gồm một phần cạp vành mũ và một phần thân chính. Gập đôi vải rồi căn ke mẫu giấy lên vải và cắt theo để có cùng lúc 2 phần mũ trước và sau bằng nhau nhưng trái mặt vải. “Mũ gấu” cắt thêm 4 miếng tai giống nhau, rộng hơn nửa hình tròn một chút.
may mũ vải cực xinh cho bé 3
Để may mũ có thắt nút trên chóp, bạn ráp hai mặt phải mũ lại với nhau, may ráp bao quanh trừ đường vành mũ. Lộn phải vải có phần trên mũ, thắt nút ở phần thuôn nhỏ phía trên. Phần vành mũ rời thì được ráp từ hai miếng vải hình chữ nhật, may lại như ống vải rồi gập đôi cho hai bên đều là mặt phải. May ráp vành mũ vào thân mũ là hoàn thành.
may mũ vải cực xinh cho bé 4
Để may mũ tròn cơ bản, bạn may ráp 2 đường khía múi ngắn ở trên chóp mũ, sau đó mới áp hai nửa mũ vào nhau và ráp một đường cung liên mạch, phần vành mũ làm tương tự ở bước 2 và may ráp vào thân mũ là xong.
may mũ vải cực xinh cho bé 5
Mũ gấu được may tương tự như mũ tròn cơ bản ở bước 3, nhưng trước khi may ráp 2 miếng mũ thì bạn cần may ráp tai đã. Vành mũ muốn đỡ cộm thì bạn may hai lần, lần thứ nhất may mép của một lớp vải vào phần vành thân mũ, lần thứ hai may mép còn lại đã được gập dấu nếp vào trong. Nói chung tương tự như may nẹp, chỉ khác là chiếc nẹp này to gấp đôi vành mũ (vì còn gập vành mũ lên).
Thành phẩm là chiếc mũ vải xinh xinh cho bé
Rất nhanh chóng và dễ dàng, bạn có thể may được 3 kiểu mũ vải ấm áp cho bé đội thay đổi đầy sinh động và tiện dụng cho những ngày thu se lạnh. Vải cotton luôn thấp tháp giúp bé không chỉ giữ ấm mà còn giúp bé nếu có lỡ dịn mồ hôi thì cũng được thấm rất nhanh và mau khô thoáng. Đây là những kiểu mũ hợp nhất với các bé sơ sinh.
may mũ vải cực xinh cho bé 6
Bạn có thể dùng vải len để may những kiểu mũ này cho bé, nên may thêm một lớp mũ nữa bằng vải cotton mỏng để may lót bên trong những mũ vải len. Chúc bạn thành công nhé!

Nhiều kiểu mẫu mũ vải xinh xinh cho bé gái cho các mẹ lựa chọn

may mũ vải cực xinh cho bé 7
Mẫu mũ vải cho bé gái 1: Hồng phấn đỏ kẻ sọc. Trông bé đội mũ này rất dễ thương phải không nào.
may mũ vải cực xinh cho bé 8
Mẫu mũ vải cho bé gái 2: Hồng nhạt, rất thích hợp cho những bé gái có làn da trắng bóc.
may mũ vải cực xinh cho bé 9
Mẫu mũ vải cho bé gái 3: sọc hồng nhạt có thắt nơ đỏ.
may mũ vải cực xinh cho bé 10
Mẫu mũ vải cho bé gái 4: sọc nước biển nhạt có thắt nơ đỏ. Thử tưởng tượng xem bé gái của bạn đội nón này sẽ xinh như thế nào.
Theo 2thoitrangtreem

Wednesday, June 18, 2014

hash_map in C++

The current C++ standard does not have hash maps, but the coming C++0x standard does, and these are already supported by g++ in the shape of "unordered maps":
#include <unordered_map>
#include <iostream>
#include <string>
using namespace std;

int main() {
    unordered_map <string, int> m;
    m["foo"] = 42;
    cout << m["foo"] << endl;
}
In order to get this compile, you need to tell g++ that you are using C++0x:
g++ -std=c++0x -o main main.cpp
.\main
These maps work pretty much as std::map does, except that instead of providing a custom operator<() for your own types, you need to provide a custom hash function - suitable functions are provided for types like integers and strings.

Abstract Class vs Interface in C++

I assume that with interface you mean a C++ class with only pure virtual methods (i.e. without any code), instead with abstract class you mean a C++ class with virtual methods that can be overridden, and some code, but at least one pure virtual method that makes the class not instantiable. e.g.:
class MyInterface
{
public:
  // Empty virtual destructor for proper cleanup
  virtual ~MyInterface() {}

  virtual void Method1() = 0;
  virtual void Method2() = 0;
};


class MyAbstractClass
{
public:
  virtual ~MyAbstractClass();

  virtual void Method1();
  virtual void Method2();
  void Method3();

  virtual void Method4() = 0; // make MyAbstractClass not instantiable
};
In Windows programming, interfaces are fundamental in COM. In fact, a COM component exports only interfaces (i.e. pointers to v-tables, i.e. pointers to set of function pointers). This helps defining an ABI(Application Binary Interface) that makes it possible to e.g. build a COM component in C++ and use it in Visual Basic, or build a COM component in C and use it in C++, or build a COM component with Visual C++ version X and use it with Visual C++ version Y. In other words, with interfaces you have high decoupling between client code and server code.
Moreover, when you want to build DLL's with a C++ object-oriented interface (instead of pure C DLL's), as described in this article, it's better to export interfaces (the "mature approach") instead of C++ classes (this is basically what COM does, but without the burden of COM infrastructure).
I'd use an interface if I want to define a set of rules using which a component can be programmed, without specifying a concrete particular behavior. Classes that implement this interface will provide some concrete behavior themselves.
Instead, I'd use an abstract class when I want to provide some default infrastructure code and behavior, and make it possible to client code to derive from this abstract class, overriding the pure virtual methods with some custom code, and complete this behavior with custom code. Think for example of an infrastructure for an OpenGL application. You can define an abstract class that initializes OpenGL, sets up the window environment, etc. and then you can derive from this class and implement custom code for e.g. the rendering process and handling user input:
// Abstract class for an OpenGL app.
// Creates rendering window, initializes OpenGL; 
// client code must derive from it 
// and implement rendering and user input.
class OpenGLApp
{
public:
  OpenGLApp();
  virtual ~OpenGLApp();
  ...

  // Run the app    
  void Run();


  // <---- This behavior must be implemented by the client ---->

  // Rendering
  virtual void Render() = 0;

  // Handle user input
  // (returns false to quit, true to continue looping)
  virtual bool HandleInput() = 0;

  // <--------------------------------------------------------->


private:
  //
  // Some infrastructure code
  //
  ... 
  void CreateRenderingWindow();
  void CreateOpenGLContext();
  void SwapBuffers();
};


class MyOpenGLDemo : public OpenGLApp
{
public:
  MyOpenGLDemo();
  virtual ~MyOpenGLDemo();

  // Rendering
  virtual void Render();  // implements rendering code

  // Handle user input
  virtual bool HandleInput(); // implements user input handling


  //  ... some other stuff
};

Lớp Trừu tượng & Giao diện (Abstract Classes & Interfaces) Java