Skip to content
  • Home
  • Contact Us
  • About Us
  • Privacy Policy
  • DMCA
  • Linkedin
  • Pinterest
  • Facebook
thecscience

TheCScience

TheCScience is a blog that publishes daily tutorials and guides on engineering subjects and everything that related to computer science and technology

  • Home
  • Human values
  • Microprocessor
  • Digital communication
  • Linux
  • outsystems guide
  • Toggle search form
HackerRank Encryption Problem Solution

HackerRank Encryption Problem Solution

Posted on April 18, 2023April 19, 2023 By Yashwant Parihar No Comments on HackerRank Encryption Problem Solution

In this post, we will solve HackerRank Encryption Problem Solution.

An English text needs to be encrypted using the following encryption scheme.
First, the spaces are removed from the text. Let L be the length of this text.
Then, characters are written into a grid, whose rows and columns have the following constraints:

[√] ≤ row <column ≤ [√], where [x] is floor function and [x] is ceil function
Example
8 = if man was meant to stay on the ground god would have given us roots
After removing spaces, the string is 54 characters long. ✓54 is between 7 and 8, so it is written in the form of a grid with 7 rows and 8 columns.

ifmanwas  
meanttos          
tayonthe  
groundgo  
dwouldha  
vegivenu  
sroots
  • Ensure that rows columns > L
  • If multiple grids satisfy the above conditions, choose the one with the minimum area, i.e. rows x columns.

The encoded message is obtained by displaying the characters of each column, with a space between column texts. The encoded message for the grid above is:

imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau

Create a function to encode a message.

Function Description

Complete the encryption function in the editor below.

encryption has the following parameter(s):

  • string s: a string to encrypt

Returns

  • string: the encrypted string

Input Format

One line of text, the string s

Sample Input

haveaniceday

Sample Output 0

hae and via ecy

Explanation 0
L = 12, √12 is between 3 and 4.
Rewritten with 3 rows and 4 columns:

have
anic
eday

Sample Input 1

feedthedog    

Sample Output 1

fto ehg ee dd

Explanation 1
L = 10, √10 is between 3 and 4.
Rewritten with 3 rows and 4 columns:

feed
thed
og

Sample Input 2

chillout

Sample Output 2

clu hlt io

Explanation 2
L= 8,√8 is between 2 and 3.
Rewritten with 3 columns and 3 rows (2368 so we have to use 3X3.)

chi
llo
ut
HackerRank Encryption Problem Solution
HackerRank Encryption Problem Solution

Table of Contents

  • Encryption C Solutions
  • Encryption C++ Solutions
  • Encryption C Sharp Solutions
  • Encryption Java Solutions
  • Encryption JavaScript Solutions
  • Encryption Python Solutions

Encryption C Solutions

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

char str[99];

int main() {
    gets(str);
    int len = strlen(str), col;
    for(int i=1;;i++) {
        if(i*i>=len) {
            col = i;
            break;
        }
        if(i*(i+1)>=len>=len) {
            col = i+1;
            break;
        }
    }
    for(int i=0;i<col;i++) {
        if(i) printf(" ");
        for(int j=i;j<len;j+=col) {
            printf("%c", str[j]);
        }
    }
    puts("");
    return 0;
}

Encryption C++ Solutions

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;


int main() {
    string s; cin >> s;
    size_t len = s.size();
    int rows = floor(sqrt(len));
    int cols = ceil(sqrt(len));
    if (rows*cols < len && rows<cols) ++rows;
    cerr << len<<"<="<<rows<<"x"<<cols<<endl;
    for (int c=0; c < cols; ++c) {
        for (int r=0; r < rows; ++r){
            int index = r*cols+c;
            if (index < len) cout << s[index];
        }
        cout << " ";
    }
    return 0;
}

Encryption C Sharp Solutions

using System;
using System.Collections.Generic;
using System.IO;

class Solution {

    static void Main(String[] args) {
        string line = Console.ReadLine();
        int len = line.Length;
        double sqrtLen = Math.Sqrt((double)len);
        int floor = (int)Math.Floor(sqrtLen);
        int ceiling = (int)Math.Ceiling(sqrtLen);
        int row, col;
        
        if (Math.Abs(len - floor * floor) < 1e-6) { //square
            row = floor;
            col = floor;
        } else {
            row = ceiling;
            col = ceiling;
        }
        
        //Console.WriteLine(row.ToString() + " " + col.ToString());
        for (int i=0; i<col; ++i) {
            for (int j=0; j<row; ++j) {
                int idx = i + j * col;
                if (idx < len)
                    Console.Write(line[idx]);
            }
            Console.Write(" ");
        }
    }
}      

Encryption Java Solutions

import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.*;
import java.util.regex.*;
import java.util.stream.*;
import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toList;

class Result {

    /*
     * Complete the 'encryption' function below.
     *
     * The function is expected to return a STRING.
     * The function accepts STRING s as parameter.
     */

    public static String encryption(String s) {
    // Write your code here
        s = s.replaceAll(" ", "");

        double initialCharactersPerWord = Math.ceil(Math.sqrt(s.length()));

        int charactersPerWord = (int) initialCharactersPerWord;
        int numberOfWords = (int)Math.ceil(s.length()/initialCharactersPerWord);
        String[] arrayOfWords = new String[numberOfWords];

        for(int i = 0; i < numberOfWords; i++){
            int start = i * charactersPerWord;

            if(i != numberOfWords - 1){
                arrayOfWords[i] = s.substring(start, start + charactersPerWord);
            }else{
                arrayOfWords[i] = s.substring(start);
            }
        }

        String[] answers = new String[arrayOfWords[0].length()];
        Arrays.fill(answers, "");
        for(int i = 0; i < numberOfWords; i++){
            for(int j = 0; j < arrayOfWords[i].length(); j++){
                answers[j] += arrayOfWords[i].charAt(j);
            }

        }

        StringBuilder finalAnswer = new StringBuilder();
        for(int i = 0; i < answers.length; i++){
            if(i != answers.length -1){
                finalAnswer.append(answers[i]).append(" ");
            }else{
                finalAnswer.append(answers[i]);
            }
        }

        return finalAnswer.toString();
    }

}

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));

        String s = bufferedReader.readLine();

        String result = Result.encryption(s);

        bufferedWriter.write(result);
        bufferedWriter.newLine();

        bufferedReader.close();
        bufferedWriter.close();
    }
}

Encryption JavaScript Solutions

function processData() {
    var S = readLine();
    var L = S.length;
    var row = Math.floor(Math.sqrt(L));
    var column = Math.ceil(Math.sqrt(L));
    if(row*row > L)
        column = row;
    if(row*column < L)
        row = column;
    
    var arr = [];
    var out = '';
    for(var i = 0; i < row; i++) {
        arr.push(S.substr(column * i,column));
    }
    
    for(var i = 0; i < column; i++) {
        for(var j = 0; j < row; j++) {
            out += String(arr[j]).charAt(i);       
        }
        out += ' ';
    }
    //console.log(row + ' -- ' + column + ' -- ' + L);
    console.log(out);
} 

var _input_array = null;
var _input_line = 0;
function readLine() {
    return _input_array[_input_line++];
}

_input = "";
process.stdin.resume();
process.stdin.setEncoding("ascii");
process.stdin.on("data", function (input) {
    _input += input;
});
process.stdin.on("end", function () {
    _input_array = _input.split("\n");
    processData();
});

Encryption Python Solutions

import math

def isWithinRange(width, height, lower, upper):
    return width >= lower and height >= lower and width <= upper and height <= upper

msg = input()
length = len(msg)
lower = math.floor(math.sqrt(length))
upper = math.ceil(math.sqrt(length))

height = lower
width = upper
while width * height >= length:
    if((width - 1) * (height - 1) >= length and isWithinRange(width-1,height-1,lower,upper) ):
        width = width - 1
        height = height - 1
    elif(width * (height - 1) >= length and isWithinRange(width,height-1,lower,upper)):
        height = height - 1
    elif((width - 1) * height >= length and isWithinRange(width-1,height,lower,upper)):
        width = width - 1
    else:
        break

x = 0
lines = []
while(True):
    if x+width < length:
        lines.append(msg[x:x+width])
        x = x+width        
    else:
        lines.append(msg[x:])
        break
encoded = []
result = []
x = 0
while(x < width):
    row = []
    for line in lines:
        if x < len(line):
            row.append(line[x])
    encoded.insert(x,row)        
    result.append(''.join(encoded[x]))
    x = x+1
print(' '.join(result))        
        

Other Solutions

  • HackerRank Bigger is Greater Problem Solution
  • HackerRank Modified Kaprekar Numbers Solution
c, C#, C++, HackerRank Solutions, java, javascript, python Tags:C, cpp, CSharp, Hackerrank Solutions, java, javascript, python

Post navigation

Previous Post: HackerRank Organizing Containers of Balls
Next Post: HackerRank Bigger is Greater Problem Solution

Related Posts

HackerRank Jack goes to Rapture Problem Solution HackerRank Jack goes to Rapture Problem Solution c
HackerRank Build a String Problem Solution HackerRank Build a String Problem Solution c
HackerRank Extra Long Factorials Problem Solution HackerRank Extra Long Factorials Problem Solution c
HackerRank Problem solving Problem Solution HackerRank Problem solving Problem Solution c
HackerRank Clique Problem Solution HackerRank Clique Problem Solution c
HackerRank Plus Minus Problem Solution HackerRank Plus Minus Problem Solution c

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Pick Your Subject
Human Values

Copyright © 2023 TheCScience.

Powered by PressBook Grid Blogs theme