hình như bỏ ko đâu, cần auto& vì có dòng gán s = t;
Câu đố: Code ngắn nhất?
trên cái challenge nó ko báo lỗi là được rồi
e test rồi, AC mới hay ấy chứ
Vậy là còn 103 kí tự.
auto geneticMicroRobots(int, auto x)
{
for (s : x)
{
std::string t;
for(n : s)
t=char(149 - n - n%4 / 3 * 11)+t;
s=t;
}
return x;
}
vậy là mặc định ko viết gì nó hiểu là auto&
chứ ko phải auto
. C++11 cũng khôn phết
Không hiểu vì sao n chưa khai báo mà nó vẫn nhận nhỉ?
cái n trong for (n : s) là biến riêng. Sửa thành for (c : s) cũng được. Còn cái tham số đầu tiên truyền vô hàm geneticMicroRobots thì đơn giản là được bỏ qua thôi. Đáng lẽ geneticMicroRobots(auto x) là đủ rồi. Khi gọi hàm này trong main() thì truyền đại số nào ở tham số đầu tiên là được
auto y = geneticMicroRobots(0, x);
for (c : s) t = (c = 149 - c%4/3*11 - c) + t;
vòng for viết lại như vậy đỡ 2 ký tự khỏi phải ép kiểu char(...)
101 chữ thế nào mà thằng kia ép xuống 96
Tên hàm chắc là sửa cũng được chứ nhể? =)))
ko được, tại trong main() thì nó gọi tên hàm này, nên bắt buộc ghi đúng tên hàm thôi.
có thể là nó gọi
std::vector<std::string> y = geneticMicroRobots(x.size(), x);
có ai nghĩ được đệ quy không nhỉ…
Nhà vô địch nâng mức tạ lên 91 kí tự rồi anh ơi
chịu thua, để coi code nó ra sao
coi profile của nó thấy nó có 100 đáp án ngắn nhất rồi, ảo lòi
auto geneticMicroRobots(int, auto v) {
for (s : v)
for (c : s = {rbegin(s), rend(s)})
c = " T G C A"[c];
return v;
}
Ôi mẹ ơi có cách đảo chuỗi ảo diệu vậy cơ à?
Còn cái chuỗi kia là 0->85
c ở đây là 1 ký tự. Mà c đc lưu ở dạng số -> " "[c] = lấy ký tự thứ c của chuỗi kia.
vãi =)))
vì ko tính dấu cách nên nó chơi theo kiểu q[‘A’] = ‘T’, q[‘T’] = ‘A’ v.v…
trong cái chuỗi trên thì nhìn vào ko cần đếm cũng biết là ‘T’ ở vị trí thứ 65 (tương ứng với mã của ‘A’), ‘G’ ở vị trí 67 của ‘C’, v.v… Vì ko tính dấu cách nên cái chuỗi kia có dài 87 ký tự nó cũng chỉ tính là 4 ký tự hack vl
còn để quay ngược chuỗi thì nó xài ctor của std::string: nhận vào iterator đầu tiên vào iterator cuối cùng tạo ra 1 chuỗi mới. Ở đây rbegin(s) là reverse begin của s, rend là reverse end của s. s = {…} là kiểu khởi tạo biến mới của C++11 theo initializer list thì phải
Kinh điển quá
nếu xài cái " T G C A"[c]
của nó thì chắc code mình còn 92 ký tự đó. là cách của chú đứng thứ 2
Đứng thứ 3 thôi, vì có người cũng 92 kí tự