01/10/2018, 12:16

[Event có quà] I challenge DNH to

Vì hôm nay có quà nên mình post challenge sớm cho mọi người nhiều thời gian kiếm quà

###Đề lần này:
In ra tên username trong diễn đàn của bạn nhưng trong chương trình không được chứa chuỗi username đó. :3

Vd: Username của mình là drgnz, thì mình phải viết chương trình làm sao in ra chuỗi drgnz. Nhưng không được phép chứa chuỗi “drgnz” trong chương trình của mình


Vd cách làm sau là không hợp lệ:

print("drgnz") // không hợp lệ vì có chứa chuỗi "drgnz" = username của mình

Ngoài ra, mình cũng sẽ không cho phép các bạn đổi chuỗi sang mảng ký tự, mảng số (mọi hệ) theo thứ tự của các ký tự trong username
Vd những cách dùng mảng sau đây không hợp lệ:

char username[] = {'d','r','g','n','z'}; // khi ghép lại sẽ ra chuỗi drgnz -> không hợp lệ
int username[] = {0x64, 0x72, 0x67, 0x6E, 0x7A} // khi đổi ra và ghép lại ra chuỗi drgnz -> không hợp lệ
int username[] = {0144, 0162, 0147, 0156, 0172} // tương tự như trên nên không hợp lệ

Những cách dùng mảng sau là hợp lệ:

char username[] = {'z','d','g','r','n'}; // khi ghép lại ra zdgrn -> hợp lệ
int username[] = {0x63, 0x71, 0x66, 0x6D, 0x79}; // -> đổi ra không phải chữ drgnz -> hợp lệ

###Quà cho event:

  • Hai vé thường tham dự Sự kiện Vietnam Web Summit 2017 cho hai bạn có cách giải sáng tạo, thú vị và nhiều tim nhất
  • Hai vé này sẽ được chia ra ở hai nơi diễn ra sự kiện là Hà Nội và TP.HCM

###Luật chơi:

  • Được phép dùng mọi ngôn ngữ, mọi kỹ thuật, mọi chiêu trò
  • Được dùng các hàm, thư viện có sẵn OvO /
  • Khuyến khích giải thích kỹ thuật, phương pháp sử dụng trong code nếu code khó hiểu

###Điều kiện nhận quà event:

  • Mỗi người chỉ nhận được một vé
  • Người nhận được quà sẽ là hai người có đoạn code sáng tạo, thú vị và được nhiều like nhất.
  • Nếu có cách giải giống nhau, sẽ ưu tiên người có đoạn code dễ hiểu hơn hoặc đưa ra lời giải thích dễ hiểu nhất.
  • Nếu cả hai có cách giải thích dễ hiểu, giống nhau, sẽ ưu tiên theo thời gian post cách giải (tất nhiên là xét thời gian chỉnh sữa nữa )
  • Comment vé bạn muốn nhận (Hà nội hoặc HCM) vào cùng cách giải nếu muốn tham gia nhận quà nhé

Và cảm ơn anh Lê Đình Huy (@Le_Dinh_Huy ) tài trợ cho challenge lần này.
Sau khi có kết quả ai trúng giải thì spam inbox liên hệ anh Huy để nhận quà nhé

P/s: Để khuyến khích các bạn tham gia khác, ai có cách giải đúng sẽ được tặng một vé đổi username miễn phí

Have fun!

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

Nói đơn giản, tức là in ra hoán vị của username của mình à?

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

Như HK Boy có username là noname00. Thì HK Boy phải viết chương trình, làm sao in ra chữ noname00 nhưng không vi phạm những điều trên OvOb

P/s: Đã bổ sung ví dụ, cảm ơn HK Boy

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

Giờ tạo username mới, đặt tên theo alphabet.
Sau đó dùng hàm sort là ra.

Hợp lệ không chị Rồng

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

Hợp lệ chứ. Mà tạo clone sao đừng cho mình biết là được :)))
Còn khi đã biết rồi thì cái gì tới nó tới nhé ( ͡° ͜ʖ ͡°)

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

Hôm bữa @drgnz đố brainf*ck, mình có học lỏm được ít syntax nên bữa nay nghịch chơi:

Ideone.com

Ideone.com

Ideone is something more than a pastebin; it's an online compiler and debugging tool which allows to compile and run code online in more than 40 programming languages.

Henry viết 14:32 ngày 01/10/2018
>>> username = {(20,): 'h', (140,): '4', (70,): 'r', (100,): 'g', (40,): 'n', (110,): '2', (50,): 'h', (30,): 'a', (90,): 'n', (10,): 't', (130,): '1', (60,): 't', (80,): 'u', (120,): '3'}
>>> ''.join(username[x] for x in sorted(username))
'thanhtrung2314'
Dark.Hades viết 14:16 ngày 01/10/2018
  std::map<int,char> n = {{9,'s'},{4,'.'},{6,'a'},{5,'H'},{2,'r'},{1,'a'},{0,'D'},{3,'k'},{7,'d'},{8,'e'}};
  for (std::size_t i = 0; i < n.size(); i++) std::cout << n.at(i);
      Dark.Hades

Mình không muốn nhận vé Web Summit tại HCM

Hung viết 14:19 ngày 01/10/2018
public class MyClass {
    public static void main(String args[]) {
        String encodedName = "erkdpqbsb";
        byte[] bytes = encodedName.getBytes();
        
        for (int i = 0; i < bytes.length; i++) {
            bytes[i] += 3;
        }
        
        String name = new String(bytes);
        
        System.out.println(name);
    }
}

Output:

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

Nhắc mọi người xíu:
Ai muốn vé thì ghi kèm vé muốn nhận vào reply nhé.
Không có là mình mặc định không tham gia nhận vé nha

Tại mình thấy vài bạn giải rồi mà ko biết có muốn nhận vé không

Vd

Sample Solution

Mình muốn nhận vé Web Summit tại HCM

明玉 viết 14:31 ngày 01/10/2018
#include <iostream>
using namespace std;
int main()
{                   \0 k o y g i e M
                     v v v v v v v v 
    long long a = 0x006B6F796769654D;
              \0 h T u
               v v v v
    int b = 0x00685475;
                \0 m n
                 v v v
    int c = 0x00006E6D;
    cout << (char*)&a << (char*)&b << (char*)&c << endl;
}

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

NodeJS, gửi request lên server.
Giấu source

const axios = require('axios');

axios.get('http://innoxious-cork.000webhostapp.com/dnh_name.php')
 .then(response => {
   console.log(response.data);
 })
 .catch(error => {
   console.log(error);
 });
明玉 viết 14:27 ngày 01/10/2018

Quá trội luôn bạn

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

Done :v

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

Dealine ngày nào vậy chị Rồng?

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

:3 Nếu tham gia cho vui thì không có deadline nha Hungsteve.

Còn tham gia lấy vé thì chắc mình hỏi lại anh Lê Đình Huy.

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

Một chút giải thuật:

// Compile online: https://ideone.com/2jmHP5
#include <bits/stdc++.h>
using namespace std;

int f[100][100];

int main() {
	string s1 = " cam mak heoi jing sat mong gei do sam zung cong soeng";
	// 沈默去迎失望 幾多心中創傷
	string s2 = "_MInH_KHonG_NHaN_mOT_Ve_VIP"; // mình nhận 2 cái cơ ahihi

	// code LCS
	for (int i=0; i<s1.size(); i++) f[i][0] = 0;
	for (int j=0; j<s2.size(); j++) f[0][j] = 0;
	
	for (int i=1; i<s1.size(); i++)
		for (int j=1; j<s2.size(); j++)
			if (s1[i] == s2[j])
				f[i][j] = 1 + f[i-1][j-1];
			else
				f[i][j] = max(f[i][j-1], f[i-1][j]);
	
	int i = s1.size()-1, j = s2.size()-1;
	string s = "";
	while (i > 0 && j > 0)
	{
		if (s1[i] == s2[j]) {
			s += s1[i];
			i--;
			j--;
		} else if (f[i-1][j] > f[i][j-1])
			i--;
		else
			j--;
	}
	reverse(s.begin(), s.end());
	cout << s << 11/25 << 12/20 << endl;
}

P/s: Đọ code dài

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

Mình thấy có mùi QHD đâu đây?

+1 cách giải

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

Mình thấy có mùi QHD đâu đây?

LCS là QHĐ mà =))

P/s: 20 char =))

phamvandung viết 14:25 ngày 01/10/2018
  usr = [113, 105, 98, 110, 119, 98, 111, 101, 118, 111, 104]
  #q, i, b, n, w, b, o, e, v, o, h

  for i in usr:
      print(chr(i-1), end='')    #find it on ascii table :D 
  print('\n')

~ muộn học rồi
~ edit: Trùng phương pháp với anh ‘Hùng sờ ti’ rồi
~

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

Tổng hợp các ý tưởng:

  • clone nick mới đặt tên theo thứ tự ascii, sort phát về đúng tên luôn.
  • brainf*ck
  • encode = thuật toán 2 chiều (vd base64)
  • thêm bớt mã ascii vào tên, for loop để trả về name ban đầu
  • dùng hash/dict, kiểu 1 key ứng 1 char trong name, in từng value theo từng key sẽ ra name

Cá nhân mình thấy ý tưởng đầu là độc nhất :v

Bài liên quan
0