01/10/2018, 12:01

Trick nào bạn thích nhất trong lập trình?

:v / Trời mưa buồn quá.Mình mở topic share trick cho xôm xíu. Không quan trọng trick có ích hay không có ích. Miễn là trick =))

Mình trước

Copy chuỗi bằng con trỏ

void myStrCopy(char *src, char *dest) {
 while(*src++ = *dest++);
}

x += 1 bằng phép trừ

x -= ~0;

Đổi số bất kỳ sang nhị phân dùng union + struct
https://ideone.com/0lFpN1

Javascript
Bỏ phần thập phân trick (đúng hầu hết chứ ko phải 100% :v )

const x = 3.5;
console.log(x | 0)

Javascript: Chuyển mọi thứ thành số với dấu +

const numStr = "123";
const today = new Date();
console.log(+numStr); // 123
console.log(+today); // xuất ra số mili giây
Nguyễn Văn Cao viết 14:02 ngày 01/10/2018

Em không biết đây có gọi là trick không =)) .
Nhưng em thích cấu trúc dữ liệu Priority_queue cho phép tính max cho độ phức tạp 0(1)
và Function sort(Begin_iterator, End_iterator, cmp()) có thể so sánh các đối tượng theo một function đã sắp xếp trước .
Trong C++ ạ

Noob viết 14:07 ngày 01/10/2018

Đổi số bất kì sang nhị phân là nó làm ntn vậy bạn, mình chưa hiểu?

Dark.Hades viết 14:08 ngày 01/10/2018

Union nó chỉ có 1 địa chỉ duy nhất cho tất cả các biến con ở trong, vậy nên khi thay dổi giá trị byte thì bits đồng thời sẽ giữ địa chỉ của thằng byte kia.

Còn dấu : để set bộ nhớ cho biến đó, char là 8 bit, set 1 tức là chỉ lấy 1 bit.

Trick hay

viết 14:01 ngày 01/10/2018

lấy số ngày trong tháng (1 ≤ m ≤ 12, chưa tính năm nhuận):
28 | 3 & 0x3bbeecc >> m * 2

1 dòng, magic number đẹp, ko cần mở ngoặc đóng ngoặc

Quang Minh viết 14:17 ngày 01/10/2018

Không biết có gọi là trick không nhưng e học được một code mà nó in ra 1 dòng chữ liên tục làm crash máy luôn nếu máy yếu :)) lúc đó cứ nghĩ mình là hacker ấy :)) giờ bớt rồi :)) nhưng nhớ vẫn thấy vui :))

Noob viết 14:02 ngày 01/10/2018

Cám ơn bạn nhé, nhờ trick này mình mới biết giới hạn size trong struct

*grab popcorn* viết 14:16 ngày 01/10/2018

OvOb cứ share đi bạn. Vui là chính mà

HK boy viết 14:05 ngày 01/10/2018

Không biết cái này có được tính là trick không.

Thường thì người ta hay viết code binary search thế này:

while (left <= right) {
    if (left == right) return left;
    else {
        mid = (left + right) / 2;
        ... // lười viết quá
    }
}

Cách này mình dùng rất nhiều lần, và cũng không ít lần trong số đó bị dính chạy vô hạn. Mình cải biên đi 1 tí:

for (int cnt = 0; cnt < 64; cnt++) {
    if (left > right)
        // invalid
    else if (right - left < 2) {
        if valid(left) return left;
        if valid(right) return right;
        // else invalid
    } else {
        // code như bình thường
    }
}

Không bao giờ dính vào chạy vô hạn, mà không sợ sai.

phamvandung viết 14:08 ngày 01/10/2018

Nhìn chẳng hiểu gì, vào like dạo

Dark.Hades viết 14:12 ngày 01/10/2018

Đếm số phần tử có trong enum hoặc enum class (C++11)

enum class EnumType
{
  TYPE_ONE,
  TYPE_TWO,
  COUNT,
};

Điều kiện là không được thay thế giá trị trong enum.
// C++20 hình như sẽ reflect được tên trong Enum qua template thì phải

Bài liên quan
0