Hoàn thành excel

Nếu bạn dành bất kỳ khoảng thời gian nào cho máy tính, có thể bạn đã tìm thấy cách sử dụng các phím tắt trong quy trình làm việc của mình. Thuộc tính quen thuộc nhất có thể là CMD-C và CMD-V [hoặc CTRL-C và CTRL-V] để sao chép và dán trong nhiều chương trình và hệ thống. Người sử dụng quyền lực có xu hướng đi xa hơn nữa. các biên tập viên văn bản phổ biến như Emacs, VIM và những người khác cung cấp cho người dùng một loạt các hoạt động đáng kinh ngạc thông qua các kết hợp phức tạp của các tổ hợp phím

Nội dung chính Hiển thị

  • Điều hướng phím tắt
  • Phím tắt nhập văn bản
  • Lịch sử Lịch sử phím tắt
  • Các phím tắt linh tinh
  • Làm thế nào để bạn nhấn Ctrl trong Python?
  • Ctrl t làm gì trong Python?

Shell ipython không đi xa đến thế, nhưng không cung cấp một số phím tắt để điều hướng nhanh khi nhập lệnh. Các phím tắt này trên thực tế không được cung cấp bởi Ipython chính, nhưng thông tin phụ thuộc của nó vào thư viện Readline GNU. Như vậy, một số phím tắt sau đây có thể khác nhau tùy thuộc vào cấu hình hệ thống của bạn. Ngoài ra, trong khi một số phím tắt này hoạt động trong ghi chép dựa trên trình duyệt, phần chủ yếu này là về các phím tắt trong vỏ ipython

Khi bạn đã quen với những điều này, chúng có thể rất hữu ích để nhanh chóng thực hiện các lệnh nhất định mà không di chuyển tay từ vị trí bàn phím "nhà". Nếu bạn là người dùng Emacs hoặc nếu bạn có kinh nghiệm với vỏ kiểu Linux, thì sau đây sẽ rất quen thuộc. Chúng tôi sẽ nhóm các phím tắt này thành một số loại. phím tắt điều hướng, phím tắt nhập văn bản, phím tắt lịch sử lệnh và phím tắt linh tinh

Điều hướng phím tắt

Mặc dù việc sử dụng các phím mũi tên trái và phải để di chuyển về phía sau và tiến về phía trước là khá rõ ràng, nhưng có những tùy chọn khác không yêu cầu di chuyển tay của bạn khỏi vị trí bàn phím "Nhà"

Tổ hợp phímHoạt động
In [1]: [reverse-i-search]`sqa': square??
9Màn hình thiết bị đầu cuối rõ ràng
In [1]: [reverse-i-search]`sqa': def square[a]:    """Return the square of a"""    return a ** 2
0Ngắt lệnh Python hiện tại________số 8Thoát khỏi phiên bản IpythonCtrl-C nói riêng có thể hữu ích khi bạn vô tình bắt đầu một công việc rất dài. Mặc dù một số phím tắt được thảo luận ở đây có vẻ hơi mờ nhạt lúc đầu, nhưng chúng nhanh chóng trở thành tự động với thực tế. Khi bạn phát triển bộ nhớ cơ đó, tôi nghi ngờ bạn thậm chí sẽ thấy mình ước chúng có sẵn trong các bối cảnh khác nhau

Cuối tuần này, tôi đã đi nghỉ cùng một số nhà phát triển đồng nghiệp của Devnology. Chúng tôi làm điều này hàng năm, uống bia, nói về lập trình, và cũng thường là lập trình

Năm nay tôi thậm chí còn vui hơn thường lệ, vì Daan van Berkel đề xuất chúng tôi xây dựng một máy Turing trong Excel. Trong bài đăng trên blog này, tôi sẽ nói về cách chúng tôi xây dựng nó, nhưng tất nhiên bạn cũng có thể bỏ qua tất cả những điều đó và chỉ cần tải xuống và chơi với nó. Xin lưu ý rằng các tính toán tự động đã bị tắt, vì vậy nếu bạn muốn chạy máy, bạn sẽ phải thực hiện thủ công

Trước hết, máy Turing là gì?

Theo Wikipedia, máy Turing là một "thiết bị giả thuyết điều khiển các ký hiệu trên một dải băng"

Dải băng là vô hạn và máy Turing có thể đọc và ghi nó, nhưng cũng duy trì trạng thái bên trong. Dựa vào ký hiệu hiện tại của băng, máy Turing có thể thay đổi trạng thái hiện tại. Một ví dụ về chương trình Turing rất đơn giản là đây

Chương trình này, với 3 trạng thái và 4 lần chuyển đổi, thay đổi khối đầu tiên gồm 1 thành khoảng trống và dừng lại. Ví dụ, nó thay đổi băng

1 1 1 _ _ 1 _ _ 1
^

vào trong

_ _ _ _ _ 1 _ _ 1
______ ^
Đây có vẻ là một cơ chế rất đơn giản, . Không hiệu quả lắm, sau này bạn sẽ thấy rằng chúng ta cần 1832 bước để tính 3 mũ 3, nhưng vẫn. Mọi tính toán có thể. Nó được Alan Turing mô tả lần đầu tiên vào năm 1936, vì vậy thậm chí trước khi có máy tính thực sự.

Mục tiêu của chúng tôi là chế tạo máy Turing chỉ sử dụng các công thức. Chúng tôi bắt đầu với việc tạo một trang tính riêng để biểu diễn bảng trạng thái, như hình bên dưới

Đây chỉ đơn giản là mã hóa của máy trạng thái với trạng thái hiện tại và tiếp theo, đọc và viết gì và di chuyển đầu theo hướng nào. Cột đầu tiên là một công thức, cụ thể là nối các cột B và C, trạng thái và ký hiệu để đọc. Chẳng hạn, công thức trong A2 đọc là =B2&”-“&C2. Giá trị được dùng làm khóa để xác định nên sử dụng chuyển đổi nào, với một trạng thái và ký hiệu. Với ví dụ trên, chúng tôi tính toán số kế tiếp cho các số đơn vị, chúng tôi đọc danh sách các số 1 [có thể đứng trước các khoảng trống] và thêm một số 1 vào cuối

Sau đó, chúng ta hãy nhìn vào chính máy. Vì chúng tôi chỉ sử dụng các công thức, chúng tôi không thể liên tục thay đổi băng. Do đó, chúng tôi sử dụng một hàng trong bảng tính để biểu thị một trạng thái của băng. Mỗi dòng sau biểu thị trạng thái của băng sau một lần chuyển đổi. Như Willem van de Ende đã nói một cách thơ mộng. “Không có nhà nước nào bị tổn hại trong quá trình tạo ra cỗ máy Turing này”

Điều này có nghĩa là dòng trên cùng của bảng tính [hiển thị màu vàng trong ảnh chụp màn hình sau] thể hiện trạng thái ban đầu này của máy. C2 hiển thị hàng nơi chúng tôi đạt đến trạng thái tạm dừng và D2 ​​đếm số 1 từ đó. Vì dòng đầu tiên chứa ba số 1, chiếc máy này dường như đang tính toán người kế vị

Bây giờ, làm thế nào để chúng ta đi từ trạng thái này sang trạng thái khác? . Tại cột A, chúng tôi lưu vị trí cột của người đứng đầu. Trong cột B, chúng tôi lưu trạng thái hiện tại. Cùng với đó, chúng ta có thể tính giá trị của một ô vuông trên băng, bằng cách xem trạng thái và giá trị trước đó trên băng, với công thức bên dưới

Một công thức khá phức tạp, vì vậy hãy định dạng nó một chút

=IF[COLUMN[C5]=A4,
IFERROR[VLOOKUP[B4&”-“&C4,StateTable,4,FALSE],C4]
,C4]

Bắt đầu với dòng cuối cùng. Nếu cột của ô này không bằng A4, nói cách khác, nếu đầu hiện không phải là ô này, thì giá trị sẽ không thay đổi, tôi. e. chúng ta có thể sử dụng giá trị ở hàng trước

Điều đó để lại cho chúng tôi những điều sau đây cho trường hợp phần đầu nằm chính xác trên cột này.
IFERROR[
VLOOKUP[B4&”-“&C4, StateTable, 4, FALSE],
C4]

Trong đối số đầu tiên của VLOOKUP, chúng ta nối trạng thái và ký hiệu ở đầu, để tìm nó trong StateTable [đối số thứ hai là phạm vi để tìm kiếm, chúng ta đã đặt tên cho bảng trạng thái là StateTable] Chúng ta lấy cột thứ 4

Nếu giá trị được tìm thấy, đây sẽ là trạng thái mới của hình vuông này trên băng. Mặt khác, một lần nữa, chúng tôi lấy giá trị trước đó. Điều này có nghĩa là khi chúng tôi đạt đến trạng thái tạm dừng, vì khi đạt đến trạng thái đó, chúng tôi sẽ không bao giờ tìm thấy chuyển đổi và chúng tôi không muốn cuộn băng chứa đầy #N/A sau trạng thái tạm dừng

Trong cột B, chúng tôi cũng sử dụng VLOOKUP để xác định trạng thái mới

Công thức được hiển thị bên dưới [$ đã xóa cho rõ ràng]

=IFERROR
[VLOOKUP[B4&”-“&INDEX[A4. FM4,A4], Bảng trạng thái, 6,  SAI],
B4]

Ở đây, khóa tra cứu phức tạp hơn một chút, chúng ta đang nối trạng thái trước đó trong B4, với giá trị ở đầu mà chúng ta tìm thấy bằng hàm INDEX, hàm này trả về giá trị của ô thứ A4 trong phạm vi A4. FM4. Lần này, chúng tôi muốn lấy cột thứ sáu, trạng thái mới

Cột A, để tính toán đầu mới, chứa một công thức tương tự, cụ thể là dòng thứ ba của cột này, tìm kiếm hướng

=IFERROR
[VLOOKUP
[VLOOKUP[B4&”-“&INDEX[A4. FM4,A4],StateTable,5,FALSE],  
DirectionTable,2,FALSE],0]+$A4

Khi chúng tôi đã tìm thấy hướng, chúng tôi tìm trong bảng thứ hai, DirectionTable, để biết đầu cần di chuyển như thế nào. L tương ứng với -1 và R tương ứng với 1. Điều này được thêm vào đầu hiện tại

Vậy đó, đó là tất cả các công thức cần thiết để xây dựng Máy Turing. thậm chí không nhiều. Tôi đoán chúng tôi mất khoảng một giờ để xây dựng cái này. Điều tuyệt vời cuối cùng mà chúng tôi đã thêm vào là định dạng có điều kiện cho phần đầu. Chúng tôi đã phải loay hoay một chút, nhưng hóa ra cú pháp định dạng có điều kiện cho phép bạn đánh dấu các công thức là COLUMN[C5]=$A5. Sử dụng nó trên toàn bộ băng dẫn đến điều này

Bạn thực sự thấy đầu di chuyển. Chúng tôi nhận thấy điều này rất hữu ích để gỡ lỗi các định nghĩa về máy trạng thái, vì bạn có thể dễ dàng thấy đầu mình làm những việc điên rồ ở đâu. Người đứng đầu bộ máy nhà nước đó là

Sau đó, Daan và tôi đã dám thực hiện hoạt động quyền lực. Điều đó khiến chúng tôi mất thêm 4 giờ nữa, nhưng chúng tôi đã làm được [tải xuống tại đây]. Đầu vào được đưa ra một lần nữa trong ký hiệu đơn nguyên, vì vậy 2 lũy thừa của 4 sẽ là

1 1 _ 1 1 1 1 [hãy gọi chúng là A và B]

Tôi không đi sâu vào chi tiết của máy trạng thái, vì nó có 39 bước đã nêu và 81 lần chuyển đổi, nhưng ý tưởng cơ bản của chúng tôi là nhân A với chính B lần. Do đó, trước tiên chúng tôi đặt một số 1 ở cuối băng, sau đó đặt một bản sao của A ở cuối băng. Sau đó, chúng tôi nhân hai số ở cuối băng [ban đầu là 1 và A]. Đối với điều này, chúng tôi đã tạo ra một máy trạng thái phụ. Trong Excelsheet có các trạng thái bắt đầu bằng S. Chúng tôi lặp lại điều này B lần, bằng cách gạch bỏ một số 1 trong B cho mỗi lần chúng tôi làm điều này. Dễ dàng phải không?

Băng [ở mức thu phóng 10%] được hiển thị bên dưới. Điều thú vị là bạn có thể thấy hai phần khác nhau của thuật toán mà chúng tôi sử dụng, các lần quét dài là sao chép A và các bước nhỏ hơn là phép nhân

Chúng tôi đã có rất nhiều niềm vui khi xây dựng nó, nhưng đó cũng là một trải nghiệm thực sự hữu ích, vì việc xây dựng cỗ máy trạng thái phức tạp đòi hỏi bạn phải rất chính xác, chỉ cần thử công cụ và nhấn 'tính toán ngay bây giờ' sẽ không thành công. Ngoài ra, như mọi khi, chia để trị là một cách tiếp cận tốt;

Ảnh thưởng, đây là chúng tôi đang làm việc với nó

Cập nhật. Nếu bạn thích bài đăng này, vui lòng upvote nó trên HN. https. //Tin tức. ycombinator. com/item?id=6416631

Bài đăng này đã được truy cập 71,872 lần

Chia sẻ cái này

  • Nhấp để chia sẻ trên Twitter [Mở trong cửa sổ mới]
  • Bấm để chia sẻ trên Facebook [Opens in new window]

Có liên quan

← Bài trước

Bài tiếp theo →

25 Bình luận

  1. phản hồi. Máy Turing Excel – IzaakNews

  2. harrytuttle 20 tháng 9 năm 2013 lúc 3. 49 giờ sáng

    Chỉ vì bạn có thể, không có nghĩa là nó đúng 😉
    Nhân tiện, bạn đã làm rất tốt. Thật tuyệt vời với những điều kỳ lạ bạn có thể làm trong Excel.

  3. Hiro_Protagonist 20 tháng 9 năm 2013 lúc 4. 37 giờ sáng

    dự án tuyệt vời. Excel không bao giờ hết làm tôi ngạc nhiên

    Nhân tiện, blog tuyệt vời quá. Tôi rất thích đọc các đề xuất của bạn và thực sự đưa ra một số điểm rất hợp lệ

    Bạn vừa tìm thấy một người hâm mộ blog mới

  4. phản hồi. Nerdcore › Máy Turing trong Excel

  5. Ron 20 tháng 9 năm 2013 lúc 9. 10 giờ sáng

    Xuất sắc. Tôi thích cách bạn và một nhóm bạn có thể làm điều gì đó như thế này cho vui. Nếu bạn thực sự muốn tránh phải tạo một bản sao của toàn bộ băng cho mỗi lần thay đổi trạng thái của máy, bạn có thể làm điều đó như thế nào?

    1. Felienne [Tác giả bài đăng] 20 tháng 9 năm 2013 lúc 9. 20 giờ sáng

      Vâng, công việc của người này là niềm vui của người khác, tôi đoán vậy 🙂 Tôi không thể nghĩ ra cách sử dụng một hàng của bảng tính dưới dạng băng mà không có macro. Nếu bạn muốn sử dụng càng ít VBA càng tốt, tôi nghĩ cách tốt nhất là liên tục tính toán lại các công thức khi chúng ta có chúng cho đến khi đạt đến điểm cố định. Bạn sẽ có thể làm điều đó với một vài dòng mã

      1. Carl Friedrich Bolz 21 tháng 9 năm 2013 lúc 1. 06 giờ sáng

        Tôi nghĩ có thể thực hiện được nếu không có macro sử dụng các công thức đệ quy được viết cực kỳ cẩn thận. Tuy nhiên, tôi chưa bao giờ hiểu rõ thứ tự tính toán lại mà Excel sử dụng đủ tốt

  6. alejandro varela 20 tháng 9 năm 2013 lúc 1. 19 giờ tối

    công việc xuất sắc. rất tuyệt

  7. phản hồi. Triển khai máy Turing trong Excel – IzaakNews

  8. phản hồi. Máy Turing Excel « Pink Iguana

  9. phản hồi. sách kiếm tiền. Đảng Dân chủ cho Boehner. Sẽ không đàm phán trần nợ. Nghiêm trọng

  10. phản hồi. Podcast thông báo bảo mật Liquidmatrix - Tóm tắt 004 - Thông báo bảo mật Liquidmatrix Thông báo bảo mật Liquidmatrix

  11. phản hồi. an ninh thông tin. Hoa Kỳ - Turings' Excel

  12. phản hồi. sinh nhật điên rồ. – Một tập hợp liên kết kỳ lạ. Instagib

  13. phản hồi. Điểm nổi bật trên Twitter và RSS của tôi cho tháng 9 năm 2013 » Christian Heindel – Tư vấn & Giải pháp CNTT

  14. phản hồi. máy Turing. Máy tính & Khoa học trên mạng

  15. Edson NOvaes Ngày 11 tháng 7 năm 2014 lúc 1. 51 giờ chiều

    http. //edsonjnovaes. báo chí. com/2014/07/02/o-teste-de-turing/

  16. Edson NOvaes Ngày 11 tháng 7 năm 2014 lúc 1. 52 giờ chiều

    Rất tuyệt.
    http. //edsonjnovaes. báo chí. com/2014/07/02/o-teste-de-turing/

  17. Jesse Schwartz Ngày 6 tháng 8 năm 2014 lúc 11. 51 giờ chiều

    Có ai có sổ làm việc excel được tham chiếu trong tài liệu này không?

    Cảm ơn

  18. Dale Matt 25 tháng 9 năm 2014 lúc 6. 19 giờ tối

    Tôi biết tôi đến bữa tiệc này muộn nhưng liệu có thể lấy một bản sao của bảng tính Máy tiện không?

    Cảm ơn

    1. felienne [Tác giả bài đăng] 25 tháng 9 năm 2014 lúc 9. 14 giờ chiều

      Xin lỗi vì điều đó, liên kết sẽ hoạt động ngay bây giờ

      1. Dale Matt 26 tháng 9 năm 2014 lúc 10. 48 giờ chiều

        Cảm ơn

  19. MrF 11 tháng 1, 2015 lúc 6. 29 giờ sáng

    Liên kết bị hỏng - có ai có thể vui lòng tải lên lại không?

Chủ Đề