LOGIC 101

1. Implication

The statement “p implies q” means that if p is true, then q must also be true. The statement “p implies q” is also written “if p then q” or sometimes “q if p.” Statement p is called the premise of the implication and q is called the conclusion.

Because conditional statements play such an essential role in mathematical reasoning, a
variety of terminology is used to express pq. You will encounter most if not all of the following ways to express this conditional statement:

  1. “if p, then q
  2. p implies q
  3. “if p, q
  4. p only if q
  5. p is sufficient for q
  6. “a sufficient condition for q is p
  7. q if p
  8. q whenever p
  9. q when p
  10. q is necessary for p
  11. “a necessary condition for p is q
  12. q follows from p
  13. q unless ¬p

A useful way to understand the truth value of a conditional statement is to think of an
obligation or a contract. For example, the pledge many politicians make when running for office is “If I am elected, then I will lower taxes.

Example 1. Each of the following statements is an implication:

  1. If you score 85% or above in this class, then you will get an A.
  2. If the U.S. discovers that the Taliban Government is involved in the terrorist attack, then it will retaliate against Afghanistan.
  3. My thumb will hurt if I hit it with a hammer.
  4. x = 2 implies x + 1 = 3.

You can view Statement 1 above as a promise. It says You are guaranteed an A provided you score 85% or above. Suppose you score a 90% in the class. If your final grade is an
A, then the promise was kept and Statement 1 is true. If your grade is not an A, then the promise was broken and Statement 1 is false. But what if you do not score 85% or above? Is Statement 1 true or false in this case? Statement 1 does not say what grade you will receive if you score less than 85%. If you score 75% in the class and receive a B, you cannot complain that the promise was broken. If you score 84% and end up with an A, you still cannot say that the promise was broken. When the premise p of the implication “p implies q” is false, we are forced into a corner. We cannot say that the implication is false, yet we have no evidence that it is true—because p didn’t happen.

This situation is reminiscent of the following dialogue from the Three Stooges:

Larry: I couldn’t say ‘yes’ and I couldn’t say ‘no’.
Curly: Could you say ‘maybe’?
Larry: I might.
Moe: [Hits them both on the head.]

Logicians have decided to take an “innocent until proven guilty” stance on this issue. An if—then statement is considered true until proven false. Since we cannot call the statement p implies q false when p is false, our only alternative is to call it true. So the chart for implies is:

The if—then Chart:
p     q      p implies q
T      T           T
T      F          F
F      T          T
F      F          T
We emphasize again the surprising fact that a false statement implies anything.

Example 2

  1.  Does 2 = 3 imply 2 + 1 = 3 + 1?
    Yes, it’s an example of the rule x = y implies x + 1 = y + 1.
  2.  Does 2 = 3 imply 2 · 0 = 3 · 0?
    Yes, it’s an example of the rule x = y implies xz = yz.

Example 3. Consider the following implications

  1. If elephants can fly, then the Cubs will win the World Series this year.
  2. If elephants can fly, then the Cubs will lose the World Series this year.

Both statements are true—assuming, of course, that elephants can’t fly.

Warning to die hard Cubs fans: please do not take Statement 1 too seriously and push elephants out of trees, hoping that one might fly.

Example 4. Consider the following implications

  1. If Hydrochloric acid (HCl) and Sodium Hydroxide (NaOH) are combined, then table salt (NaCl) will be produced.
  2. If March has 31 days, then dogs are mammals.

Both statements are true. The first statement is an example of cause and effect and reflects the chemical equation HCl + NaOH = NaCl + H2O.
In the second statement, there is clearly no causal relation between days of the month and dogs being mammals. Both the premise and the conclusion of Statement 2 are true, so according to the chart, the implication is true.

The point here is that the use of implies in logic is very different from its use in everyday language to reflect causality. From the chart we see that the implication if p then q is false when it happens that p is true, but q is false. This leads us to the surprising conclusion that the negation of an implication is an and statement. The negation of the statement p implies q is the statement p and not q.

Example 5.

  1. The negation of “if I hit my thumb with a hammer, then my thumb will hurt” is “I hit my thumb with a hammer and my thumb does not hurt”.
  2. The negation of “if Sosa is traded, then Cubs attendance will drop” is “Sosa is traded and the Cubs attendance does not drop”.

 

Example 6. The Four Card Problem

You are shown one side of four cards. You are told that each card has a number on one side and a letter on the other side. You are to test the rule:

if a card has a vowel on one side, then it has an even number on the other side. You want to find out whether the rule is true or false. What are the only cards you need to turn over to test the rule (and why) if the cards pictured in front of you are:
E K 4 7
[The answer is given at the end of this section.]

The converse of the statement p implies q is the statement q implies p.

Example 7.

The converse of “if an elephant walks in Mom’s garden, then her tomato plants will be ruined” is “if Mom’s tomato plants are ruined, then an elephant was walking in her garden“.

It is clear from this example that a statement is not logically equivalent to its converse. There could be other causes for ruined tomato plants besides promenading pachyderms. The inverse of the statement p implies q is the statement not p implies not q. The contrapositive of the statement p implies q is the statement not q implies not p.

 

Example 8.
Statement: If the gloves fit, then the jury will acquit.
Converse: If the jury acquits, then the gloves fit.
Inverse: If the gloves don’t fit, then the jury won’t acquit.
Contrapositive: If the jury doesn’t acquit, then the gloves don’t fit.

It can be shown by using truth charts that a statement is logically equivalent to its contrapositive and the converse is logically equivalent to the inverse.

Example 9. The statement “if I hit my thumb with a hammer, then my thumb will hurt” is logically equivalent to “if my thumb doesn’t hurt, then I didn’t hit is with a hammer“.

 

Example 10. Stated as an if–then sentence, the Golden Rule becomes “if you want other people to act in a certain way to you, then you should act that way towards them”. The inverse of the Golden Rule is “if you don’t want other people to act in a certain way to you, then you should not act that way towards them”.

Many people consider the inverse (or equivalently, the converse) of the Golden Rule to be a more reasonable moral law. The biconditional statement p if and only if q means that both p and q are true or else they are both false.

The if and only if Chart:

p      q      p if and only if q
T      T          T
T      F          F
F      T          F
F      F          T

The biconditional p if and only if q is logically equivalent to saying p implies q and q implies p.

Example 11. You are eligible to vote in a United States election if and only if you are a United States citizen, 18 years or older, and not a convicted felon.

 

The answer to the four-card problem is: you only need to turn over cards ‘E’ and ‘7’.

Beginners guide to creating a REST API

If you’re reading this, you’ve probably heard the terms API and REST thrown around and you’re starting to wonder what the fuss is all about. Maybe you already know a little bit, but don’t know how to get started. In this guide, I will explain the basics of REST and how to get started building an API (including authentication) for your application.

What is an API?

The term API stands for Application Programming Interface. The term can be used to describe the features of a library, or how to interact with it. Your favorite library may have “API Documentation” which documents which functions are available, how you call them, which arguments are required, etc.

However, these days, when people refer to an API they are most likely referring to an HTTP API, which can be a way of sharing application data over the internet. For example, Twitter has an API that allows you to request tweets in a format that makes it easy to import into your own application. This is the true power of HTTP APIs, being able to “mashup” data from multiple applications into your own hybrid application, or create an application which enhances the experience of using someone else’s application.

For example, let’s say we have an application that allows you to view, create, edit, and delete widgets. We could create an HTTP API that allows you to perform these functions:

http://example.com/view_widgets
http://example.com/create_new_widget?name=Widgetizer
http://example.com/update_widget?id=123&name=Foo
http://example.com/delete_widget?id=123

A problem has started to arise when everyone starts implementing their own APIs. Without a standard way of naming URLs, you always have to refer to the documentation to understand how the API works. One API might have a URL like /view_widgets whereas another API might use /widgets/all.

Don’t worry, REST comes to rescue us from this mess.

What is REST?

REST stands for Representational State Transfer. This is a term invented by Roy Fielding to describe a standard way of creating HTTP APIs. He noticed that the four common actions (view, create, edit, and delete) map directly to HTTP verbs that are already implemented: GETPOSTPUTDELETE.

If you’re new to HTTP, you may not be familiar with some of these verbs. So let me give a brief rundown on HTTP methods.

HTTP methods

There are technically 8 different HTTP methods:

GET
POST
PUT
DELETE
OPTIONS
HEAD
TRACE
CONNECT

Most of the time, when you’re clicking around in your browser, you are only ever using the GET HTTP method. GET is used when you are “getting” a resource from the internet. When you submit a form, you are usually using the POST method to “post data” back to the website. As for the other methods, some browsers don’t even implement them all. However, for our uses, that doesn’t matter. What matters is that we have a bunch of “verbs” to choose from which help to describe the actions we are taking. We will be using client libraries which already know how to use the different HTTP methods.

Examples of REST

Let’s look at a few examples of what makes an API “RESTful”. Using our widgets example again…

If we wanted to view all widgets, the URL would look like this:

GET http://example.com/widgets

Create a new widget by posting the data:

POST http://example.com/widgets
Data:
    name = Foobar

To view a single widget we “get” it by specifying that widget’s id:

GET http://example.com/widgets/123

Update that widget by “putting” the new data:

PUT http://example.com/widgets/123
Data:
    name = New name
    color = blue

Delete that widget:

DELETE http://example.com/widgets/123

Anatomy of a REST URL

You might have noticed from the previous examples that REST URLs use a consistent naming scheme. When you are interacting with an API, you are almost always manipulating some sort of object. In our examples, this is a Widget. In REST terminology, this is called a Resource. The first part of the URL is always the plural form of the resource:

/widgets

This is always used when referring to this collection of resources (“list all” and “add one” actions). When you are working with a specific resource, you add the ID to the URL.

/widgets/123

This URL is used when you want to “view”, “edit”, or “delete” the particular resource.

Nested Resources

Let’s say our widgets have many users associated with them. What would this URL structure look like?

List all:

GET /widgets/123/users

Add one:

POST /widgets/123/users
Data:
    name = Andrew

Nested resources are perfectly acceptable in URLs. However, it’s not a best practice to go more than two levels deep. It’s not necessary because you can simply refer to those nested resources by ID rather than nesting them within their parents. For example:

/widgets/123/users/456/sports/789

…can be referenced as:

/users/456/sports/789

…or even:

/sports/789

HTTP Status Codes

Another important part of REST is responding with the correct status code for the type of request that was made. If you’re new to HTTP status codes, heres a quick summary. When you make an HTTP request, the server will respond with a code which corresponds to whether or not the request was successful and how the client should proceed. There are four different levels of codes:

  • 2xx = Success
  • 3xx = Redirect
  • 4xx = User error
  • 5xx = Server error

Here’s a list of the most important status codes:

Success codes:

  • 200 – OK (the default)
  • 201 – Created
  • 202 – Accepted (often used for delete requests)

User error codes:

  • 400 – Bad Request (generic user error/bad data)
  • 401 – Unauthorized (this area requires you to log in)
  • 404 – Not Found (bad URL)
  • 405 – Method Not Allowed (wrong HTTP method)
  • 409 – Conflict (i.e. trying to create the same resource with a PUT request)

API response formats

When you make an HTTP request, you can request the format that you want to receive. For example, making a request for a webpage, you want the format to be in HTML, or if you are downloading an image, the format returned should be an image. However, it’s the server’s responsibility to respond in the format that was requested.

JSON has quickly become the format of choice for REST APIs. It has a lightweight, readable syntax that can be easily manipulated. So when a user of our API makes a request and specifies JSON as the format they would prefer:

GET /widgets
Accept: application/json

…our API will return an array of widgets formatted as JSON:

[
  {
    id: 123,
    name: 'Simple Widget'
  },
  {
    id: 456,
    name: 'My other widget'
  }
]

If the user requests a format that we haven’t implemented, what do we do? You can throw some type of error, but I would recommend enforcing JSON as your standard response format. It’s the format that your developers will want to use. No reason to support other formats unless you already have an API which needs to be supported.

Building a REST API

Actually building a REST API is mostly outside the scope of this tutorial since it is language specific, but I will give a brief example in Ruby using a library called Sinatra:

require 'sinatra'
require 'JSON'
require 'widget' # our imaginary widget model

# list all
get '/widgets' do
  Widget.all.to_json
end

# view one
get '/widgets/:id' do
  widget = Widget.find(params[:id])
  return status 404 if widget.nil?
  widget.to_json
end

# create
post '/widgets' do
  widget = Widget.new(params['widget'])
  widget.save
  status 201
end

# update
put '/widgets/:id' do
  widget = Widget.find(params[:id])
  return status 404 if widget.nil?
  widget.update(params[:widget])
  widget.save
  status 202
end

delete '/widgets/:id' do
  widget = Widget.find(params[:id])
  return status 404 if widget.nil?
  widget.delete
  status 202
end

API authentication

In normal web applications, handling authentication is usually handled by accepting a username and password, and saving the user ID in the session. The user’s browser saves a cookie with ID of the session. When the user visits a page on the site that requires authentication, the browser sends the cookie, the app looks up the session by the ID (if it hasn’t expired), and since the user ID was saved in the session, the user is allowed to view the page.

With an API, using sessions to keep track of users is not necessarily the best approach. Sometimes, your users may want to access the API directly, other times the user may way to authorize another application to access the API on their behalf.

The solution to this is to use token based authentication. The user logs in with their username and password and the application responds with a unique token that the user can use for future requests. This token can be passed onto the application so that the user can revoke that token later if they choose to deny that application further access.

There is a standard way of doing this that has become very popular. It’s called OAuth. Specifically, version 2 of the OAuth standard. There are a lot of great resources online for implementing OAuth so I would say that is outside the scope of this tutorial. If you are using Ruby, there are some great libraries that handle most of the work for you, like OmniAuth.

Hopefully, I’ve filled in enough blanks for you to get started. If you still have questions, you may find this tutorialhelpful.

Source: https://www.andrewhavens.com/posts/20/beginners-guide-to-creating-a-rest-api

Memento mori short story by Jonathan Nolan

MEMENTO MORI

Original https://www.londonscreenwritersfestival.com/assets/Memento-Short-Story-by-Jonathan-Nolan.pdf
By Jonathan Nolan – Translate by Kan

What like a bullet can undeceive!” –
Tạm dịch: Có sự lừa dối nào mà một viên đạn không làm ta thức tỉnh!
-Herman Melville

Vợ của anh thường nói rằng anh sẽ thậm chí trễ cả chết cho đám tang của chính anh. Nhớ chứ ? Cô đùa anh bởi vì anh như một biểu tượng sống cho thói chậm trễ, luôn luôn quên một cái gì đấy, ngay cả trước khi anh bị tai nạn

Ngay lúc này đây có lẽ anh đang tự hỏi mình liệu rằng anh đã quá trễ với cô ấy?

Anh đã ở đó, anh chắc chắn như vậy. Đó là tấm hình của một người dán vào bức tường cạnh cánh cửa. Người ta thường không chụp ảnh ở đám tang, nhưng có ai đó, bác sỹ của anh, tôi đoán vậy, biết rằng anh sẽ không thể nhớ. Họ đã phóng to bức ảnh và dán nó ở ngay đấy, cạnh cánh cửa vì vậy anh sẽ không thể không nhìn thấy nó mỗi lần anh thức dậy để tìm cô ấy ở đâu.

Cái gã trong bức ảnh, người với những bông hoa. Đó chính là anh. Và anh đang làm gì? Anh đang đọc những dòng chữ trên bia mộ cố tìm hiểu xem anh đang ở đám tang của ai cũng giống như lúc này anh đang đọc nó vậy, cố gắng để tìm hiểu xem ai là người dán những tấm hình này lên tấm cửa. Nhưng sao phải bận tâm đọc những thứ mà anh rồi sẽ không thể nhớ ?

Cô ấy đã ra đi, và anh hẳn là đang nhói đau lúc này, nghe ngóng tin tức. Tin tôi đi, tôi biết anh anh cảm thấy thế nào. Anh có lẽ là một đống phế liệu. Cứ cho là được năm phút, có lẽ mười. Có thể thậm chí là nửa tiếng trước khi anh quên hết.

Nhưng anh sẽ quên, tôi đảm bảo điều đó. Chỉ một vài phút nữa và anh lại chạy tới cánh cửa, tìm kiếm cô ấy hết lần này tới lần khác, sụp đổ khi anh nhìn thấy bức hình. Bao nhiêu lần anh phải nghe ngóng tin tức trước khi những phần khác của cơ thể anh thay vì bộ não tàn tạ bắt đầu nhớ ra?

Đau khổ bất tận, giận dữ bất tận. Vô dụng, mất phương hướng. Có thể anh không hiểu chuyện gì đã xảy ra. Cũng không thể nói tôi hoàn toàn hiểu. Bệnh mất trí nhớ ngắn hạn. Đó là những gì dấu hiệu nói. CRS disease. Phán đoán của anh cũng như của tôi.

Có thể anh không hiểu những gì đã xảy ra cho anh. Nhưng anh nhớ những gì đã xảy ra cho CÔ ẤY, đúng không? Những vị bác sỹ không muốn nói về nó. Họ không trả lời câu hỏi của anh. Họ không nghĩ đó là điều đúng đắn cho một người ở trong tình trạng này nghe về những điều đó. Nhưng anh nhớ một số thứ, phải không? Anh nhớ khuôn mặt của hắn.

Đó là lí do mà tôi viết cho anh. Vô ích, có lẽ vậy. Tôi không biết bao nhiêu lần anh sẽ phải đọc thứ này trước khi anh nghe tôi nói. Tôi thậm chí không biết anh nhốt mình trong căn phòng này đã bao lâu cũng như anh không biết vậy. Nhưng cũng có mặt tốt trong việc quên đi mọi thứ là anh sẽ quên những thứ anh không viết xuống mà chẳng biết nguyên nhân

Chẳng sớm thì muộn anh sẽ muốn làm điều gì đó về nó. Và khi làm điều đó anh sẽ phải tin tôi, bởi vì tôi là người duy nhất có thể giúp anh.

***

EARL MẮT NHẮM MẮT MỞ, phía trên anh là một mảnh trần nhà với những tấm ốp trắng, lạc lõng trong đó là một tờ giấy viết tay dán ngay trên đầu anh, những dòng chữ đủ to để anh đọc khi nằm trên giường. Có tiếng chuông đồng hồ báo thức đâu đó. Anh đọc tấm bảng, chớp mắt, đọc lại lần nữa, rồi nhìn căn phòng.

Nó là một căn phòng trắng, trắng một cách quá đáng, từ những bức tường và những tấm rèm cho tới đồ nội thất và cả tấm ga trải giường. Chiếc đồng hồ báo thức vẫn đang kêu từ phía cái bàn trắng dưới cái cửa sổ với cái rèm trắng. Vào lúc này Earl mơ hồ nhận ra rằng anh đang nằm trên chiếc khăn trải giường trắng mặc một chiếc áo choàng và đi đôi dép lê.

Anh nằm lại và đọc chữ trên tấm giấy dán trên trần nhà một lần nữa. Những dòng chữ hoa thô to viết rằng: ĐÂY LÀ PHÒNG CỦA ANH. MỘT CĂN PHÒNG TRONG BỆNH VIỆN. ĐÂY LÀ NƠI ANH SỐNG BÂY GIỜ.

Earl ngồi dậy và ngó xung quanh. Căn phòng nhỉnh hơn chiếc giường của anh. Hai cánh cửa và một cửa sổ. Khung cảnh ngoài cửa sổ không giúp gì nhiều, nó sát những cái cây ở giữa một bãi cỏ được cắt tỉa cẩn thận cuối con đường 2 làn. Đó là những cây thường xanh, hoặc những cây cành trơ trọi lá vào đầu xuân hoặc cuối thu.

Từng inch của chiếc bàn được che phủ bởi những tấm ghi chú kiểu như bưu thiếp, những tệp giấy note, những danh sách in ngay ngắn, sách tâm thần học, những khung ảnh. Phía trên của đống lộn xộn đấy là một bảng trò ô chữ đã hoàn thành một nữa. Chiếc đồng hồ báo thức cưỡi lên một xấp giấy báo. Earl táp vào nút ngưng chuông tạm thời và lấy một điếu thuốc là từ gói thuốc dán vào tay áo của chiếc áo choàng anh đang mặc. Anh vỗ vào những cái túi rỗng trên chiếc pijama để tìm bật lửa. Anh liếc qua đống giấy trên bàn, nhìn lướt qua từng ngăn kéo. Cuối cùng anh tìm thấy một hộp diêm được dán lên tường cạnh cửa sổ. Một tờ giấy khác dán trên nắp hộp diêm. Trên đó là những dòng chữ lớn màu vàng như hét vào mặt anh: THUỐC LÁ? KIỂM TRA ĐÈN TRƯỚC, THẰNG ĐẦN.

Earl cười vào tờ giấy, châm điếu thuốc và hút một hơi dài. Trên cửa sổ trước mặt dán một tờ A4 với tiêu đề THỜI GIAN BIỂU.

Trên đó là biểu đồ thời gian từng giờ, trong dòng “10:00pm tới 8:00am” ghi “ĐI NGỦ”. Earl ngó chiếc đồng hồ báo thức: 8:15. Dựa theo ánh sáng bên ngoài, đây hẳn là buổi sáng. Anh kiểm tra đồng hồ đeo tay của mình: 10:30. Anh áp nó vào tai và nghe rồi sau đó lên dây cót cho nó, chỉnh lại giờ theo chiếc đồng hồ báo thức.

Căn cứ theo thời gian biểu, khoảng thời gian từ 8:00 đến 8:30 là khoảng thời gian ĐÁNH RĂNG. Earl nhếch môi cười một lần nữa và bước tới phòng tắm.

Cửa sổ phòng tắm đang mở. Anh xoa tay cho ấm và trông thấy cái gạt tàn trên bệ cửa sổ. Gác trên đó là một điếu thuốc, cháy chậm rãi để lại một đoạn tro xám dài bằng ngón tay. Anh thở dài dập điếu thuốc cũ và gác điếu đang hút lên đấy.

Kem đánh răng quệt lên chiếc bàn chải. Vòi nước máy là kiểu ấn mỗi lần ra một lượng nước. Earl nhấn bàn chải vào má bắt đầu chà qua lại trong khi đang mở cửa tủ thuốc. Những ngăn tủ được lấp đầy bởi những gói thuốc đơn liều vitamins, aspirin( thuốc giảm đau ), thuốc chống nôn. Nước súc miệng cũng được đóng thành liều đơn, khoảng một chén của thứ nước màu xanh đóng trong chai nhựa. Chỉ có kem đánh răng là đóng trong tuýp bình thường. Earl nhổ nước đánh răng ra khỏi mồm và làm một cái súc miệng. Khi đặt bàn chải đánh răng cạnh tuýp thuốc đánh răng anh để ý thấy có một miếng nêm nhỏ bằng giấy kẹp giữa bệ kính và mặt sau của tủ thuốc bằng thép. Anh nhổ nước súc miệng vào bồn và nhấn vòi nước vài cái xả trôi nó đi. Anh đóng tủ thuốc và cười vào hình phản chiếu của mình trong gương.

“Ai mà cần nửa tiếng để đánh răng chứ?”

Mảnh giấy bị gấp lại tới kích thước tí hin và cẩn thận như một bức thư tình của những đứa trẻ lớp sáu. Earl mở nó ra và vuốt phẳng nó trên mặt gương. Nó viết:
NẾU ANH CÓ THỂ ĐỌC ĐƯỢC CÁI NÀY, VẬY THÌ ANH LÀ MỘT THẰNG HÈN.

Earl nhìn vô định vào tờ giấy rồi đọc lại lần nữa. Anh mở mặt sau. Trên mặt sau viết: TÁI BÚT: SAU KHI ĐỌC HÃY CẤT NÓ ĐI LẦN NỮA.

Earl đọc cả hai mặt một lần nữa, sau đó gấp lại như cũ và nhét nó vào dưới tuýp thuốc đánh răng.

Anh bắt đầu nhận ra vết sẹo. Nó bắt đầu từ dưới tai, dày với viền lởm chởm rồi biến mất vào trong tóc. Earl quay đầu cố ngoái lại để tìm vết sẹo. Anh lần theo nó bằng đầu ngón tay, rồi nhìn xuống điếu thuốc lá đang cháy trong gạt tàn. Một ý nghĩ xâm chiếm lấy anh rồi anh quay ra khỏi nhà tắm.

Anh đang khựng lại trước của, một tay vẫn đang cầm nắm cửa. Hai bức hình dán trên cánh cửa. Sự chú ý của Earl bắt đầu với tấm hình MRI, một khung đen với bốn ô nhìn vào trong sọ ai đó. Bằng bút marker, tấm hình ghi: NÃO CỦA ANH. Earl cẩn thận soi xét bức MRI. Những vòng tròn đồng tâm nhiều màu. Anh nhìn ra đó là cầu mắt của mình và phía sau nó là hai thùy não. Những nếp nhăn mượt, vòng tròn, bán nguyệt. Nhưng ngay chỗ chính giữa đầu là một vòng khoanh tròn, một lỗ dài từ sau cổ như cái lỗ một con dòi đào vào trong một quả mơ, là một cái gì đó khác biệt. Biến dạng, vỡ nát những không thể nhầm lẫn. Một vết nhòe đậm, hình dáng của một bông hoa, ngay ở đó, chính giữa não anh.

Anh cúi người để nhìn vào tấm hình khác. Đó là một tấm hình của một người đàn ông với những bông hoa, đứng bên cạnh một ngôi mộ mới. Người đàn ông đang khom người đọc những dòng chữ trên bia mộ. Trong một khoảnh khắc điều này giống như khi anh đứng giữa lối đi trong nhà gương hay những khung hình đầu tiên của một bức vẽ vô tận: Một người đàn ông khom người nhìn vào một bức ảnh của một người đàn ông đang khom người đọc những dòng chữ trên bia mộ. Earl đứng đó khá lâu. Có khi anh bắt đầu khóc cũng có khi anh chỉ đứng đó dán mắt vào bức hình trong yên lặng. Cuối cùng, anh quay lại giường, đổ sập xuống, nhắm nghiền mắt, cố gắng để ngủ.

Điếu thuốc chậm rãi tắt dần trong nhà tắm. Mạch điện trong đồng hồ báo thức bắt đầu đếm ngược từ mười, và nó lại bắt đầu kêu lên.

Earl mắt nhắm mắt mở, phía trên anh là một mảnh trần nhà với những tấm ốp trắng, lạc lõng trong đó là một tờ giấy viết tay dán ngay trên đầu anh, những dòng chữ đủ để anh đọc khi nằm trên giường.

***

Anh không thể có một cuộc sống bình thường được nữa. Anh phải hiểu rằng. Làm sao anh có thể có bạn gái nếu như anh không thể nhớ tên cô ấy. Cũng chẳng thể có con, trừ khi anh muốn chúng lớn lên với một người bố chẳng biết chúng là ai. Chắc như đinh đóng cột là anh chẳng thể kiếm được một công việc. Chẳng có nghề nào lại đưa việc mất trí làm tiêu chí tuyển dụng. Hay là làm điếm đực?????? Chính trị, hẳn rồi.

Không, đời anh thế là hết. Anh đã là một người chết. Thứ duy nhất những bác sỹ hi vọng có thể giúp anh trút bỏ ít gánh nặng của những trật tự sắp xếp. Và họ có lẽ sẽ chẳng bao giờ để anh về nhà, dù nó có thể ở nơi nào đó.

Cho nên câu hỏi ở đây là “tồn tại hay không tồn tại”, bởi vì anh không tồn tại. Câu hỏi là bất cứ khi nào anh muốn làm điều gì đó. Hay việc báo thù có quan trọng với anh không.

Nó quan trọng với đa số mọi người. Cho một vài tuần, họ lên kế hoạch, lập mưu tính kế, chờ đợi cơ hội. Nhưng thời gian qua đi sẽ dần xói mòn những xung động ban đầu đó. Thời gian cứ như thằng ăn cắp, chẳng phải người ta hay nói thế sao? Và thời gian thậm chí thuyết phục hầu hết chúng ta rằng tha thứ là một phẩm chất tốt. Mỉa mai thay, hèn nhát và sự tha thứ ở một mức độ nào đó khá là giống nhau. Thời gian ăn cắp sự gan dạ của bạn.

Nếu thời gian và sợ hãi không đủ để làm tan biến ý định trả thù của họ, sẽ luôn luôn có một thứ vô hình nhẹ nhàng xoa dịu, thì thầm vào tai bạn: “Chúng ta đều hiểu, nhưng ta sẽ trở nên tốt hơn khi để mọi chuyện qua đi. Để chúng ta trở nên tốt đẹp hơn chứ không chìm vào vũng sình và trở thành chúng nó.” Còn có những lời từ phía chính quyền, nếu anh cố làm gì ngu ngốc, chúng tôi sẽ nhốt anh vào một căn phòng nhỏ.

Nhưng họ chẳng phải đã nhốt anh vào một căn phòng nhỏ rồi hay sao? Chỉ là họ không thực sự khóa nó lại hay cho người canh gác cẩn thận bởi vì anh chỉ là gã tàn tật. Một cái xác. Một cọng rau mà người ta chẳng thể nhớ là đã ăn hay ỉa ra nếu không có ai ở đó nhắc đến.

Và cùng với thời gian trôi đi, à thì, điều đó thực sự không áp dụng với anh nữa, đúng không? Chỉ mười phút, rồi lại mười phút, cứ như thế. Làm sao anh có thể tha thứ nếu như anh không thể nhớ để tha thứ?

Có lẽ anh từng là kiểu người sẽ để mọi thứ qua đi, ? Trước đây?. Nhưng anh đã không còn là anh của trước kia. Không được một nửa. Anh chỉ là một mảnh vỡ; anh là người đàn ông mười phút.

Tất nhiên, sự yếu đuối là một sự lấn áp to lớn. Nó là nguồn xung động chính. Anh có lẽ lựa chọn ngồi trong căn phòng nhỏ và khóc. Sống trong những mảnh trí nhớ hữu hạn, cẩn thận đánh bóng từng mảnh ký ức. Cả nửa đời ngồi phía sau tấm kính cửa sổ với những tấm giấy ghim trên bảng như bộ sưu tập côn trùng. Anh có muốn sống phía sau tấm kính đó không? Như miếng thịt trong một tảng thạch nấu đông.

Anh có thể muốn nhưng không thể, anh có thể không? Anh không thể bởi vì mảnh cuối cùng trong bộ sưu tập ký ức. Thứ cuối cùng anh còn nhớ. Khuôn mặt anh. Khuôn mặt anh và vợ anh đang nhìn vào anh tìm kiếm sự giúp đỡ.

Và có thể đó là nơi anh có thể nghỉ ngơi sau khi mọi chuyện kết thúc. Bộ sưu tập nhỏ bé của anh. Họ có thể nhốt anh lại vào một căn phòng nhỏ khác và anh có thể sống cả đời với quá khứ của anh. Nhưng chỉ nếu như trong tay anh có một mảnh giấy viết rằng anh đã tóm được hắn.

Anh biết rằng tôi đúng. Anh biết rằng có rất nhiều việc phải làm. Nó dường như là bất khả thi, nhưng tôi chắc rằng nếu như chúng ta làm tất cả phần của chúng ta, chúng ta rồi sẽ tìm ra cách. Nhưng anh chẳng có nhiều thời gian. Trên thực tế anh chỉ có mười phút. Rồi mọi thứ lại bắt đầu lại từ đầu. Vì vậy hãy làm gì đó với thời gian mà anh có.

***

EARL MỞ MẮT rồi chớp vào bóng tối. Đồng hồ báo thức đang kêu. Đó là 3:20am, ánh trăng chiếu qua của sổ, vậy giờ đang là buổi đêm. Earl dò dẫm tìm cái đèn, suýt thì gạt đổ nó trong lúc tìm kiếm. Ánh đèn dây tóc tràn ngập căn phòng, phủ vàng lên những đồ nội thất vốn dĩ màu trắng, cả những bức tường và tấm ga trải giường. Anh ngả lưng xuống giường và nhìn lên những tấm ốp trần màu vàng, bị thu hút bởi một tấm giấy viết tay dán trên trần nhà. Anh đọc nó hai hay ba lần, sau đó đánh mắt tới căn phòng và mọi thứ xung quanh.

Đó là một căn phòng trơ trọi. Có một cái bàn dưới cửa sổ. Cái bàn đơn sơ có mỗi chiếc đồng hồ báo thức đang kêu. Earl nhận ra rằng, lúc này anh đã quần áo đóng bộ đầy đủ. Anh thậm chí còn có đôi giày dưới chăn. Anh rời khỏi giường đến chỗ cái bàn. Chẳng có gì trong phòng gợi ý về người nào ở đây hay từng có ai ở đây, ngoại trừ những ghi chép dán đây đó trên tường. Không hình, không sách, không gì cả. Qua cửa sổ anh nhìn thấy trăng tròn đang chiếu rọi lên bãi cỏ được cắt tỉa cẩn thận.

Earl vỗ vào nút tạm ngưng chuông trên đồng hồ báo thức phát giác có hai chìa khóa dán vào mu bàn tay. Anh gỡ miếng băng dính trong khi lục lọi từng ngăn kéo rỗng. Ở bên túi trái chiếc áo khoác, anh tìm thấy tờ một trăm đô cuộn lại và một phong thư. Anh kiểm tra phần còn lại của căn phòng và phòng tắm. Một ít băng dính, vài cái đót thuốc lá. Chẳng còn gì cả.

Earl lơ đãng lần mò vết sẹo trên cổ và tiến về cái giường. Anh nằm xuống và nhìn lên trần nhà nơi dán mảnh giấy viết. DẬY NGAY, RA KHỎI CHỖ NÀY NGAY. CÓ NHỮNG NGƯỜI ĐANG TÌM CÁCH GIẾT MÀY.

Earl nhắm mắt lại.

***

Ở trường giáo viên từng dạy lập những danh sách, nhớ chứ? Về lại những ngày khi mà bài tập viết trên mu bàn tay. Và nếu nó phai mất trong lúc tắm, ôi thôi, xác định là không có bài tập để nộp rồi. Không có phương hướng, họ nói. Vô kỉ luật. Vì vậy họ dạy bạn viết lên những thứ lâu bền hơn.

Tất nhiên, giáo viên của anh sẽ cười đái cả ra quần nếu họ có thể gặp anh bây giờ. Bởi vì anh đã trở thành một thứ đúng như những bài học của họ xây dựng. Bởi vì anh chẳng thể đi ỉa mà không kiểm tra danh sách của anh trước.

Họ đã đúng. Lập danh sách là lối thoát duy nhất cho mớ hỗn độn này.

Đây là sự thực: Con người, những người bình thường không bao giờ chỉ đơn giản là một tập hợp các thuộc tính. Nó không đơn giản như vậy. Chúng ta là kết hợp đáng thương của hệ thống thần kinh phức tạp, những đám mây điện trôi dạt qua bộ não. Mỗi con người được chia thành 24 phần cho mỗi giờ, và trong 24 giờ đó, đó là một vở kịch câm, một người trao quyền kiểm soát sân khấu cho người tiếp theo, phía sau là một đám kêu gào đến lượt mình đứng dưới ánh đèn sân khấu. Mỗi tuần, mỗi ngày. Con người giận dữ nhường sân cho người hờn dỗi, rồi kẻ nghiện tình dục, một người nội tâm, một nhà đàm thoại. Mỗi con người là tập hợp của những tên tội phạm, một dây chuyền, một băng đảng của những kẻ ngu ngốc.

Đây là bi kịch của cuộc sống. Bởi vì trong vài phút của mỗi ngày, người ta bỗng trở thành thiên tài. Khoảnh khắc của sự khai sáng, thấu hiểu, gọi là gì đi nữa. Phần mây mù, những hành tinh xếp thành một đường thẳng, mọi thứ bỗng chốc minh bạch. Tôi nên bỏ thuốc lá, có lẽ, à đây là cách để tôi nhanh chóng trở thành triệu phú, hay như thế như thế đây là chìa khóa của hạnh phúc vĩnh cửu. Đó là sự thật đáng thương. Trong một vài khoảnh khắc, bí mật của vũ trụ khai mở cho chúng ta. Cuộc đời là những mánh khóe rẻ tiền.

Nhưng sau giây phút dành cho thiên tài, sân khấu phải trả lại cho kẻ tiếp theo sau cánh gà, hầu như là một kẻ chỉ muốn ngồi nhai snack khoai tây, bao nhiêu sự sáng suốt, thông hiểu, sự cứu rỗi chỉ còn giao phó cho một kẻ ngốc, một kẻ đam mê nhục dục hay một tên nghiện.

Lối thoát duy nhất cho đống hỗn độn này, tất nhiên là để bước những bước chắc chắn để kiểm soát những tên ngốc mà anh sẽ trở thành. Để tay trong tay anh nắm lấy cái băng đảng ngu ngốc này và dẫn dắt chúng. Cách tốt nhất để làm điều này là một danh sách.

Nó giống như những bức thư tự viết cho chính mình. Một kế hoạch chính, phác thảo bởi một kẻ có thể nhìn thấy ánh sáng, chia ra từng bước nhỏ đơn giản đủ để cho những kẻ ngốc còn lại dễ dàng hiểu, làm theo từng bước từ 1 đến 100. Lặp lại nếu cần thiết.

Vấn đề của anh hơi dữ dội hơn một chút, có lẽ, nhưng về cơ bản vẫn là một.

Giống như lập trình, căn phòng Trung Quốc. Anh nhớ điều đó chứ? Một gã ngồi trong căn phòng nhỏ, dàn những tấm bài với những chữ mà hắn không hiểu, dàn chúng xuống từng chữ một theo trình tự thời gian dựa vào chỉ dẫn của ai đó. Những tấm bài xếp thành một câu chuyện cười tiếng Hoa. Gã ko biết tiếng Hoa, dĩ nhiên. Gã chỉ làm theo hướng dẫn.

Dĩ nhiên có vài thứ khác biệt rõ ràng trong tình cảnh của anh. Anh trốn khỏi căn phòng họ nhốt anh ở trong, vì vậy kế hoạch phải linh động. Và gã ra chỉ dẫn cũng chính là anh, chỉ là một phiên bản sớm hơn của chính anh. Còn câu chuyện cười anh đang kể, tôi chỉ không nghĩ rằng sẽ có ai thấy nó buồn cười.

Vậy đó là ý tưởng. Tất cả những gì anh làm là phải tuân theo hướng dẫn của anh. Trèo lên một cái thang, đi xuống một tầng lầu. Từng bước một theo danh sách. Đơn giản.

Và bí mật là, dĩ nhiên, hãy để danh sách đó ở một nơi mà anh có thể nhìn thấy.

***

TIẾNG CHUÔNG BÁO THỨC NHƯ NÀI NỈ XUYÊN QUA MÍ MẮT ANH. Anh với tới cái đồng hồ nhưng không thể nhấc tay.

Earl mở mắt thấy một người to lớn đang khom lưng bên người anh. Người đàn ông nhìn anh, khó chịu, rồi quay lại với công việc. Earl nhìn xung quanh. Quá tối đối với một phòng khám.

Sau đó cơn đau ngập tràn bộ não, chặn đứng bất kì câu hỏi nào. Anh vặn vẹo, cố gắng giựt cánh tay mình, cánh tay anh cảm thấy như đang cháy. Nhưng nó không di chuyển, người đàn ông bắn cho Earl một cái nhìn cau có. Earl tự chỉnh lại mình trên ghế để nhìn qua đầu người đàn ông.

Tiếng ồn và nỗi đau cả hai đều đến từ khẩu súng trên tay người đàn ông với những cây kim nơi mà nhẽ ra là những viên đạn. Cây kim chọc vào da thịt dưới cánh tay Earl, để lại vết rộp cùng những chữ cái phía sau nó.

Earl cố sắp xếp lại tâm trí để có cái nhìn rõ hơn, để đọc những chữ trên cánh tay, nhưng anh không thể. Anh nằm lại và nhìn lên trần nhà.

Cuối cùng người thợ xăm tắt bút, lau cánh tay của Earl với một mẩu giẻ, rồi lần mò ra phía sau bới lên một cuốn sổ nhỏ mô tả cách phòng ngừa các khả năng nhiễm trùng. Có thể sau đó anh sẽ kể với vợ về gã này trong một mảnh ghi chú nhỏ. Có lẽ vợ anh sẽ thuyết phục anh gọi tới cảnh sát.

Earl nhìn xuống cánh tay. Những chữ cái trồi lên từ trên da, rỉ một ít nước. Chúng chạy từ phía sau chỗ dây đeo đồng hồ tới phía sau cùi trỏ. Earl chớp mắt và đọc dòng chữ. Nó viết một cách cẩn thận bằng những chữ in hoa, TÔI HIẾP VÀ GIẾT VỢ ANH

***

Hôm nay sinh nhật anh, vì vậy em có một món quà nhỏ. Em có thể chỉ cần mua cho anh ít bia nhưng ai mà biết được chuyện gì sẽ xảy ra sau đó?

Vì vậy, em tặng anh một cái chuông. Em nghĩ có thể em phải cầm chiếc đồng hồ của anh để mua nó, nhưng anh thì cần quái gì một chiếc đồng hồ chứ nhỉ?

Anh có lẽ đang tự hỏi mình rằng, tại sao lại là cái chuông? Trên thực tế em đoán anh sẽ luôn tự hỏi mình câu hỏi đó mỗi khi anh tìm thấy nó trong túi. Có quá nhiều chữ rồi. Quá nhiều chữ để anh có thể đào lại mỗi khi anh muôn tìm câu trả lời một cho câu hỏi nhỏ.

Nó là một câu đùa, thực vậy. Nó là một câu đùa thực tế. Nhưng hãy nghĩ theo hướng này. Em sẽ không thực sự cười anh nhiều bằng anh cười chính mình đâu.

Em thực sự thích nghĩ rằng mỗi lần anh lấy nó ra khỏi túi và thẫn thờ: Sao mình là có cái chuông nhỉ? Và một phần nhỏ của anh, một phần của cái bộ não vỡ nát ấy sẽ giúp anh cười, giống như em đang cười anh bây giờ.

Với lại, anh biết câu trả lời. Đó là thứ mà anh đã từng biết. Vậy nên nếu anh nghĩ về nó anh sẽ biết thôi.

Ngày xưa, khi mà người ta bị ám ảnh với nỗi sợ bị chôn sống. Anh nhớ ra chưa. Y học chưa tiến bộ như bây giờ, người ta không thường thấy những người tự nhiên sống dậy trong quan tài. Vì vậy những kẻ nhà giàu đặt làm những chiếc quan tài đặc biệt thiết kế với ống thở. Một chiếc ống nhỏ xuyên qua lớp đất phía trên để nhỡ có ai đó tỉnh dậy họ sẽ không bị thiếu oxy. Rồi người ta nhận ra người ở dưới có thể hét vào cái ống, nhưng nó quá nhỏ nên cũng không truyền được nhiều âm thanh ra ngoài. Không đủ để thu hút sự chú ý, vì vậy một sợi dây được tròng vào trong ống với một chiếc chuông gắn bên ngoài trên bia mộ. Nếu người chết sống lại, họ chỉ cần rung chiếc chuông cho tới khi có người tới đào họ lên.

Em lại đang cười đây, cứ tưởng tượng cảnh anh trên xe bus hay trong tiệm ăn nhanh, sờ vào trong túi và tìm thấy cái chuông, tự hỏi cái chuông ở đâu ra, tại sao lại có nó. Hay thậm chí còn rung nó lên

Chúc mừng sinh nhật, anh bạn.

Tôi không biết ai đã tìm ra giải pháp cho vấn đề chung của chúng ta, vậy nên tôi không biết liệu có nên chúc mừng anh hay tôi. Thay đổi cách sống một chút, nhưng dù sao phải thừa nhận đó là một giải pháp tinh tế.

Nhìn vào chính anh mà xem câu trả lời.

Âm thanh đó giống như của một cái thẻ đánh dấu. Tôi không biết khi nào thì anh nghĩ thông suốt nhưng tôi phải ngả mũ với anh. Không phải vì anh biết tôi đang nói về cái quái gì. Nhưng thành thật mà nói, thật là một cuộc động não. Sau tất cả mỗi người đều cần một tấm gương để nhắc nhở họ là ai. Anh cũng không khác vậy

***

TIẾNG NÓI NHỎ TỪ CHIẾC MÁY DỪNG LẠI, rồi lại lặp lại chính nó. “Bây giờ là 8:00am” Earl mở mắt thay bộ nhận tín hiệu. Chiếc điện thoại đậu trên đầu giường bằng gỗ veneer giá rẻ phía sau cái giường cong cong hướng xuống cuối cái minibar. Chiếc TV vẫn đang bật, những đốm màu đan xen vào lẫn nhau trên màn hình. Earl nằm ngửa xuống và ngạc nhiên nhìn chính mình, già cỗi, làn da rám nắng, mái tóc chổng trên đầu như những tia mặt trời. Chiếc gương trên trần nhà đã nứt, tấm gương đã mờ không còn sáng nữa. Earl tiếp tục nhìn vào chính mình, kinh ngạc bởi những gì anh nhìn thấy. Anh đã vận đồ đầy đủ, quần áo đã cũ, sờn chỉ ở vài nơi.

Earl nhìn tới chỗ quen thuộc trên cánh tay trái tìm kiếm cho chiếc đồng hồ đeo tay, nhưng  nó không có ở đó. Anh dời mắt từ chiếc gương tới cánh tay. Chỉ là tay không và màu da đã trở nên đồng đều cứ như anh chưa bao giờ đeo chiếc đồng hồ ở đó. Có một mũi tên màu đen phía trong cánh tay chỉ thẳng lên ống tay áo. Anh nhìn nó một lúc. Có lẽ anh đã không cố để kì nó đi nữa. Anh vén tay áo.

Mũi tên chỉ vào một câu được xăm vào phía trong cánh tay. Earl đọc nó một lần, có lẽ hai. Một mũi tên khác bắt đầu ở phía đầu câu, chỉ vào phía xa cánh tay của Earl, biến mất dưới lằn tay áo. Anh gỡ khuy cài.

Nhìn thấp xuống ngực, anh có thể nhận ra hình dáng nhưng ko thể nhìn rõ được. vì vậy anh nhìn vào tấm gương phía trên.

Mũi tên dẫn đến phía trên cánh tay, đi qua vai rồi chỉ xuống phần thân, kết thúc ở bức hình một người đàn ông chiếm phần lớn ngực Earl. Khuôn mặt của một kẻ đậm người, đầu hói, ria mép và râu dê. Nó là một khuôn mặt giống như từ một bức họa mô tả tội phạm của cảnh sát, có những phần không tự nhiên trong đó.

Phần lớn của thân trên của anh được che phủ bởi nhiều từ, câu ngắn, một ít thông tin, một ít hướng dẫn, tất cả đều được viết ngược để Earl có thể nhìn thấy trong gương.

Cuối cùng Earl ngồi dậy, cài khuy áo và đi tới chỗ cái bàn. Anh lấy ra một cái bút, môt mảnh giấy từ ngăn kéo, ngồi xuống và bắt đầu viết.

***

Tôi không biết khi nào anh sẽ đọc những dòng này. Tôi còn không chắc anh sẽ bận tâm đọc nó. Tôi đoán anh không cần phải làm vậy.

Thật là xấu hổ, thực sự vậy, rằng tôi và anh sẽ không bao giờ gặp mặt. Nhưng giống như bài hát “Vào lúc anh đọc những dòng này, tôi đã đi xa”

Chúng ta thực gần. Đó là những gì tôi cảm nhận. Rất nhiều mảnh nhỏ đặt lại với nhau, đánh vần ra. Tôi đoán đó chỉ là vấn đề thời gian cho tới khi anh tìm ra hắn.

Ai mà biết chúng ta đã làm những gì để ra khỏi đây? Hẳn là cả một đống chuyện, nếu anh có thể nhớ dù chỉ một ít. Nhưng tôi đoán sẽ tốt hơn nếu anh không thể.

Tôi chợt có một ý nghĩ. Có lẽ anh sẽ thấy nó hữu ích.

Mỗi người đều đang chờ đợi một kết thúc, nhưng biết đâu nếu kết thúc đấy đã đi qua chúng ta rồi? Nếu như câu truyện đùa về ngày phán xét đã thực sự tới và đi và chúng ta không ai là kẻ hiểu được? Tận thế đến lặng lẽ; những người được chọn đã lên thiên đường, và còn lại chúng ta, những kẻ không qua khỏi thử thách, chỉ tiếp tục, lãng quên. Những kẻ đã chết, lang thang loanh quanh sau khi Chúa đã xong việc của mình, vẫn đợi chờ về một tương lai lạc quan.

Tôi đoán nếu đó là sự thật, vậy thì anh có làm gì nó cũng chẳng còn quan trọng nữa. Không còn kì vọng. Nếu anh không thể tìm thấy hắn, điều đó cũng không quan trọng, bởi chẳng có gì quan trọng. Nhưng nếu anh có thể tìm thấy hắn, vậy thì anh hãy giết hắn mà không cần phải do dự gì hết về hậu quả. Bởi vì chẳng có hậu quả gì hết.

Đó là những gì tôi nghĩ ngay lúc này, trong căn phòng nhỏ bé tàn tạ này. Những khung hình của những con tàu trên tường. Tôi không biết, rõ ràng, nhưng nếu tôi phải đoán, tôi nghĩ chúng ta đang ở đâu đó bên bờ biển. Nếu anh tự hỏi tại sao cánh tay trái của anh nhìn đậm màu hơn tay phải. Tôi nghĩ tôi không biết giải thích thế nào. Và tôi đoán có lẽ chúng ta đã lái xe một chặng đường dài. Và, không, tôi không biết chuyện gì đã xảy ra với chiếc đồng hồ.

Và tất cả những chiếc chìa khóa đó. Tôi không có ý tưởng gì về chúng cả. Tôi chẳng nhận ra bất cứ cái nào. Chìa khóa xe hay chìa khóa nhà hay những cái chìa nhỏ trên vòng khóa. Chúng ta đang định làm gì với nó?

Tôi tự hỏi nếu anh cảm thấy ngớ ngẩn không khi anh tìm thấy hắn. Bị truy lùng bởi một người đàn ông mười phút. Bị sát hại bởi một cây rau.

Tôi sẽ đi bây giờ. Tôi đặt bút xuống, nhắm mắt lại và rồi anh có thể đọc những gì anh muốn.

Tôi chỉ muốn anh biết rằng tôi tự hào về anh. Chẳng ai đang ở lại đáng để nói và chẳng ai đã rời đi muốn những lời này.

EARL MỞ TO MẮT, bắt đầu nhìn xuyên qua cửa kính ô-tô. Nheo mắt. Mỉm cười với đám đông đang tụ tập trên phố. Đám đông đang tụ họp quanh một cơ thể trên ô cửa. Cơ thể trống rỗng từ từ lướt qua vỉa hè và ngã vào ống cống thoát nước.

***

Một gã quản kho, mặt cúi, mắt mở to. Đầu hói, râu dê. Đã chết, giống như bức phác thảo của cảnh sát, khuôn mặt nhìn khá giống nhau. Đây chắc chắn là gã. Nhưng thực sự cũng có thể là bất cứ ai.

Earl vẫn đang cười với cái xác khi những chiếc xe ô tô tấp vào lề đường. Chiếc xe? Ai nói vậy. Có thể đó là xe đi tuần của cảnh sát. Có thể chỉ là chiếc taxi. Chiếc xe hòa mình vào dòng giao thông, mắt Earl vẫn lóe lên trong đêm, nhìn cái thi thể biến mất trong vòng tròn những người đi bộ hiếu kỳ. Anh cười thầm với mình khi chiếc xe kéo dần khoảng cách giữa anh với đám đông.

Nụ cười trên môi Earl nhạt đi một chút. Có cái gì đó xảy đến với anh. Anh bắt đầu vỗ những chiếc túi trên người; từ tốn lúc đầu như một người đàn ông tìm kiếm chiếc chìa khóa của anh ấy, rồi dần trở nên tuyệt vọng. Có thể do sự kiềm hãm của chiếc còng tay. Anh bắt đầu đổ hết mọi thứ trong túi ra chỗ ngồi bên cạnh. Một ít tiền. Một đống chìa khóa. Một ít giấy vụn.

Một vật kim loại nhỏ tròn tròn lăn khỏi túi anh và trượt trên cái ghế vinyl. Earl trở nên điên loạn. Anh dập điên cuồng vào tấm nhựa ngăn cách anh và người tài xế, cầu xin một cái bút. Có lẽ người lái xe không nói được tiếng Anh nhiều lắm. Có lẽ cảnh sát không có thói quen nói nhiều với nghi phạm. Dù là trường hợp nào, tấm ngăn cách giữa người đằng trước và đằng sau vẫn đóng chặt. Chẳng có cái bút nào được đưa tới.

Chiếc xe đi qua một cái ổ gà, Earl chớp mắt về phía hình chiếu của mình ở gương chiếu hậu. Anh ấy đã bình tĩnh lại. Người lái xe cua xe ở một góc rẽ, vật kim loại tròn trượt lại phía chân Earl ngồi với một tiếng jing nhẹ. Anh nhặt nó lên và nhìn vào nó, tò mò. Nó là một cái chuông nhỏ. Một cái chuông kim loại nhỏ. Khắc trên đó là tên của anh và ngày tháng. Anh ấy nhận ra cái đầu tiên đó là năm sinh của anh. Nhưng ngày và tháng không có ý nghĩa gì với anh lắm. Chẳng có ý nghĩa gì.

Trong khi thả chiếc chuông sang tay khác, anh nhận thấy khoảng trống trên cổ tay nơi chiếc đồng hồ vẫn ở đó. Có một mũi tên nhỏ chỉ lên trên cánh tay. Earl nhìn vào mũi tên và bắt đầu vén tay áo.

***

“Anh sẽ trễ cả chết cho đám tang của chính anh”, cô ấy nói. Nhớ chứ? Càng nghĩ về nó, nó càng trở nên bình thường. Có tên ngốc nào, sau tất cả, lại vội vàng lao tới cái kết cuộc đời hắn chứ?

Và làm sao tôi biết được rằng tôi đã muộn cơ chứ? Tôi không còn đồng hồ nữa. Tôi không biết chúng ta đã làm gì với nó.

Dù sao, anh cần đồng hồ làm quái gì cơ chứ? Nó là một cái đồ cổ lỗ sĩ, một cái tạ trên cổ tay. Biểu tượng của con người cũ của anh. Khi mà anh vẫn còn tin vào thời gian.

Không. Kệ nó. Việc anh không còn tin tưởng vào thời gian chẳng đáng kể bằng việc thời gian không còn tin tưởng vào anh. Và ai cần nó chứ? Ai mà muốn trở thành một trong những kẻ sống trong vòng an tọa của tương lai, trong sự an tọa của khoảnh khắc sau một khoảnh khắc mà trong đó họ cảm thấy cái gì đó quyền lực? Sống trong khoảnh khắc tiếp theo, mà trong đó họ chẳng cảm thấy gì. Với tay xuống chiếc đồng hồ, xa khỏi những người làm những chuyện không nói nên lời với họ. Tin tưởng vào lời nói dối thời gian sẽ làm lành tất cả vết thương-chỉ là một cách nói ngọt ngào rằng thời gian đang bào mòn chúng ta.

Nhưng anh cũng không khác biệt. Anh không hoàn hảo hơn. Thời gian là ba thời với hầu hết mỗi người, nhưng với anh, với chúng ta chỉ là một. Một điểm duy nhất. Một khoảnh khắc. Khoảnh khắc này. Giống như anh là trung tâm của cái đồng hồ, là trục kim để kim xoay quanh. Thời gian trôi qua quanh anh nhưng không bao giờ mang anh theo. Nó đã mất khả năng ảnh hưởng đến anh. Họ nói gì nào? Thời gian là một tên kẻ cắp? Nhưng không phải với anh. Nhắm mắt lại và anh lại có thể bắt đầu mọi thứ từ đầu. Gợi lại những cảm xúc cần thiết đấy, tươi mới như một đóa hồng.

Thời gian là một sự phi lý. Một khái niệm trừu tượng. Thứ duy nhất quan trọng chính là khoảnh khắc này. Khoảnh khắc diễn ra hàng triệu lần. Anh phải tin tôi. Nếu khoảnh khắc này lặp lại đủ mức, nếu anh tiếp tục cố gắng và anh phải tiếp tục cố gắng, cuối cùng anh cũng sẽ làm được bước cuối cùng trong danh sách.

Hết.

Recursion – Đệ quy

This page is under construction!

Bài viết gồm 2 phần:

Phần 1: Giới thiệu hàm đệ quy

Phần 2: Phân tích hàm đệ quy bằng các ví dụ dễ hiểu

Phần 1: Hàm đệ quy ( recursive function)

Hàm đệ quy là hàm tự gọi chính nó. Một ví dụ thường thấy trong hầu hết các cuốn sách nói về đệ quy là hàm tính giai thừa ( factorial )

def factorial(n):
    if n == 0 or n == 1:
        return 1
    else:
        return n * factorial(n - 1)

Ở đây chúng ta define hàm factorial(n) và gọi chính nó trong body của hàm. Tại sao lại làm được điều này, nhìn có vẻ mâu thuẫn nhưng hãy nhớ rằng hàm sẽ không được thực thi cho đến khi gọi nó vì vậy điều này hoàn toàn có thể làm được. Để hiểu rõ hơn xin đọc bài về Environment diagram ( chưa viết ).

Cấu trúc chung của một hàm đệ quy thường có 3 phần

  1. Phần base case: Thường là phần mà input của nó là trường hợp đơn giản nhất của vấn đề có thể dễ dàng tìm ra được output của input này. Base case thường là điều kiện để dừng của hàm đệ quy
  2. Xây dựng recursive call: Phần gọi hàm với input đơn giản hơn (simpler input) của tổng thể vấn đề. Input này sẽ ngày càng tiến gần đến base case (simplest input). Mấu chốt của việc xây dựng recursive call là tìm ra câu hỏi thích hợp cho vấn đề tổng thể và áp dụng câu hỏi đấy cho input đơn giản hơn.
    Ví dụ: để tính n! ta chỉ cần biết (n-1)! rồi nhân vs n giả định rằng chúng ta đã biết (n-1)! là gì
  3. Sử dụng kết quả của recursive call để giải quyết toàn bộ vấn đề: Làm thế nào để giải quyết toàn bộ vấn đề với kết quả tìm được từ recursive call. Trong trường hợp tính n! ta chỉ việc lấy n * (n – 1)!

Phần 2: Phân tích hàm đệ quy bằng các ví dụ dễ hiểu – Làm thế nào để hiểu đệ quy là gì – Làm thế nào để giải quyết các vấn đề bằng tư duy đệ quy

[tobe continue]

Dùng hàm đệ quy và thuật toán Euclid để tìm ước chung lớn nhất (Using recursive function and Euclidean algorithm to find GCD of 2 numbers)

https://en.wikipedia.org/wiki/Euclidean_algorithm#Procedure

Các bạn nên đọc bài viết về hàm đệ quy trước khi đọc bài này. Tuy nhiên nếu chỉ cần hiều về thuật toán của Euclid thì đọc tiếp cũng không sao. Bài viết gồm 2 phần.

  • Phần 1: Giải thích thuật toán.
  • Phần 2: Xây dựng hàm đệ quy

Phần 1: Thuật toán tìm ước chung lớn nhất (GCD: Greatest Common Divisor) của Euclid
Chúng ta đều biết cách tìm ước chung lớn nhất (GCD) của 2 số bằng phương pháp phân tích thừa số.

Vd:
GCD(10, 45)= ?
10 = 2 * 5
45 = 9 * 5
=> GCD(10, 45) = 5
GCD(1701, 3768) = ?

gcd_1701_3768

Thuật toán của Euclid được sử dụng cách đây 300 năm trước công nguyên bởi nhà toán học Euclid và có thể còn được dùng trước cả thời của Euclid nữa.

Trước khi giới thiệu thuật toán của Euclid, chúng ta cần phải làm quen với phép chia lấy phần dư ( ký hiệu % )

vd:
7 % 4  = 3 vì 7 = 4 * 1 + 3
23 % 10 = 3 vì 23 = 10 * 2 + 3
30 % 5 = 0 vì 30 = 5 * 6 + 0
3 % 4 = 3 vì 3 = 4 * 0 + 3

Euclid bảo chúng ta rằng:
Với 2 số A và B, A > B.
Lấy A % B = R. Nếu R != 0 (A là số bị chia. B là số chia. R là số dư)
Lấy B % R = Q. Nếu Q != 0 (B là số bị chia. R là số chia. Q là số dư)
Lấy R % Q = T. Nếu T = 0 (R là số bị chia. Q là số chia. T là số dư)
Thì Q là GCD

Tóm lại sau khi lấy số lớn % số bé, chúng ta liên tiếp lấy số chia % số dư (của phép tính trước). Nếu kết quả bằng 0 thì số chia trong phép tính này chính là ước chung lớn nhất. Nghe có chút ‘loạn loạn’. Hãy xem một vài ví dụ sẽ dễ hiểu hơn


GCD(10, 45) = ?
45 % 10 = 5 (45 là số bị chia. 10 là số chia. 5 là số dư)
10 % 5 = 0 (10 là số chia của phép tính trước. 5 là là số dư của phép tính trước)
-> GCD(10, 45) = 5

GCD(1701, 3768) = ?
3768 %  1701 = 366
1701 %  366   = 237
366   %  237   = 129
237   %  129   = 108
129   %  108   = 21
108   %  21     = 3
21     %  3       = 0

-> GCD(1701, 3768) = 3

Vậy thuật toán này hoạt động như thế nào ???

Có thể minh họa thuật toán của Euclid bằng việc lát gạch sàn nhà. Hãy tưởng tượng bạn là một người thợ xây và khách hàng yêu cầu bạn lát sàn nhà của họ chỉ dùng gạch hình vuông, kích thước thế nào cũng được nhưng phải là hình vuông, không dùng hình chữ nhật, hình thang, hình tam giác v.v…

square

Đây là đơn hàng số 1:
Kích thước sàn nhà là 10 * 50 (m)
Đơn hàng này thì dễ rồi bạn chỉ việc lấy 50 / 10 = 5 viên gạch 10 * 10(m)
1050
Đơn hàng số 2:
Kích thước sàn nhà 35 * 15 (m)
01
Dĩ nhiên nếu bạn lấy kích thước mỗi viên gạch là 1 * 1 (m) thì sẽ giải quyết được vấn đề ngay không phải nghĩ tuy nhiên như thế sẽ phải lát 35 * 15 = 525 viên gạch. Mà tôi thì quá lười để lát nhiều gạch như vậy. Dù sao thì yêu cầu là dùng gạch hình vuông kích thước nào cũng được. Vậy nên tôi sẽ tìm kích thước của viên gạch hình vuông sao cho số lần lát gạch ít nhất.
And tadaaa GCD come to rescue !!!
Đầu tiên lấy cạnh lớn chia cho cạnh nhỏ
02
ta được 2 “viên gạch” lớn 15 * 15 (m) và một phần thừa ra 15 * 5(m). Phần thừa này chính là kết quả của phép chia lấy phần dư 35 % 15 = 5. Giá mà cạnh lớn là 30m thì chúng ta đã xong việc (30 % 15 = 0) chỉ cần 2 viên 15 x 15.

Ta lại tiếp tục làm việc với phần dư này. Lại lấy cạnh lớn chia cạnh nhỏ
03
Lần này chúng ta gặp may mắn vì không còn dư chút nào 15/5 = 3 dư 0 ( 15 % 5 = 0). Vậy chúng ta có thể lấy viên gạch 5 * 5 làm template cho sàn nhà và chỉ phải lát 21 lần thay vì 525 lần!!!
04

Và kết thúc việc lát gạch. 5 cũng chính là ước chung lớn nhất(GCD) của 35 và 15

Bây giờ chúng ta đã hiểu thuật toán của Euclid hoạt động như thế nào. Hãy viết vài dòng code để không phải vẽ hình mỗi khi có khách mới thuê lát sàn nhà nữa.
Phần 2: Hàm đệ quy

def gcd(a, b):
    """Returns the greatest common divisor
    of a and b using recursion.
    >>> gcd(34, 19)
    1
    >>> gcd(39, 91)
    13
    >>> gcd(20, 30)
    10
    >>> gcd(40, 40)
    40
    """
    if a < b:
        a, b = b, a
    def find_gcd(a, b):
        if a == b or a % b == 0:
            return b
        return find_gcd(b, a % b)
    return find_gcd(a, b)

[to be continue]