Task 4 Decryption от 28.01.18г.
Ето, тази задача доста ме затрудни да разгадая условието и, четох два пъти с google преводач. Е това условие не го разбрах. Молбата ми е някой да ми обясни условието!
Ето, тази задача доста ме затрудни да разгадая условието и, четох два пъти с google преводач. Е това условие не го разбрах. Молбата ми е някой да ми обясни условието!
Накратко, входните данни са разделени на 3 части:
Намираш за коя декриптираща таблица имаме най-много съобщения, декриптираш ги и ги извеждаш като резултат в реда, в който са въведени (едно спрямо друго).
По-подробно, задачата е следната:
За декриптирането може да ползваш каквото си харесаш от този Encryption-Tool.cpp (идва като бонус към условието на задачата):
#include <iostream>
#include <string>
#include <unordered_map>
#include <vector>
#include <cmath>
using namespace std;
string changeLetters(string s, unordered_map<char, char> letterChangeMap) {
string changed(s.size(), ' ');
for (size_t i = 0; i < s.size(); i++) {
char originalChar = s[i];
if (isalpha(originalChar)) {
/// NOTE: we know that every char will have a matching char
changed[i] = letterChangeMap[originalChar];
} else {
changed[i] = originalChar;
}
}
return changed;
}
int main() {
string message;
getline(cin, message);
string encryption;
getline(cin, encryption);
unordered_map<char, char> encryptionMap;
for (int i = 0; i < encryption.size(); i++) {
char encryptedChar = encryption[i];
char actualChar = 'a' + i;
encryptionMap[actualChar] = encryptedChar;
}
cout << changeLetters(message, encryptionMap) << endl;
return 0;
}
ПП
Според мен, условието си е супер - съдържа цялата необходима информация (важните неща са с удебелен шрифт), примерите са добре подбрани и обяснени подробно, а като бонус е и забавно за четене. :)
Вярно, че е по-дълго, но не оставя нищо за свободна интерпретация, а това е най-важното.
Това е доста относително. :)
Миналата година се явих на този изпит, че изпитите на Жорката не са за изпускане, и успях да го реша целият за под 3 часа, без да ми се наложи да питам по условието на която и да е задача, но все пак съм решавал и предишни негови задачи. Номерът, поне при мен, е първо да погледна примерите (ако не са ясни - гледам в описанието), после входните данни и накрая детайлите в текста, които все още не са ми станали ясни. Самото повествование си го оставям за домашно четиво :)
За сметка на това загубих няколко часа в умуване по следната задача от текущата инстанция на курса, докато се "светна", че противно на всякаква логика и без да е упоменато в условието или да се загатва от дадените примери, резултатът от double трябва да се кастне към int (или да се използва floor), за да минаt 3 от 5-те теста в Judge:
05. Total Average of Students:
https://judge.softuni.bg/Contests/Compete/Index/1428#4
За качеството на самите задачи спрямо предишните издания ще си премълча. За другата задача най-добре отвори нова тема, за да не се разводнява тази, а и задачата е много добра и си заслужава собствена тема.