×
Dodano do koszyka:
Pozycja znajduje się w koszyku, zwiększono ilość tej pozycji:
Zakupiłeś już tę pozycję:
Książkę możesz pobrać z biblioteki w panelu użytkownika
Pozycja znajduje się w koszyku
Przejdź do koszyka

Zawartość koszyka

ODBIERZ TWÓJ BONUS :: »

1 z 10 czyli 10 sposobów na 1 kod!

Opis
----

Konkurs: 1 z 10 czyli 10 sposobów na 1 kod!

10 000 zobowiązuje! Specjalnie dla Was – tylko dla Fanów marki Helion na Facebooku – przygotowaliśmy konkurs 1 z 10 czyli 10 sposobów na 1 kod!



Problem
----

Złośliwy programista w Helionie zakodował kod rabatowy przygotowany dla fanów. Kupon rabatowy zakodowany został w poniższym kodzie:

Kod
----

0x52 0x42 0x4c 0x50 0x41 0x5a

Pomóż wszystkim fanom i rozkoduj dla nich kod kuponu rabatowego! Jaka jego wartość? Zobaczysz podczas składania zamówienia! Programista dał jedną wskazówkę: Po rozkodowaniu znaków posortuj je od Z do A.


Zadanie konkursowe
----

Przedstaw powyższy kod w wybranym z wymienionych języku programowania:

shell(bash,awk,sek...) 
autor: Jakub Stawowy
rozwiązanie: 
echo -e "\x52\x42\x4c\x50\x41\x5a" | awk '{printf "%s\n", $_ | 
"grep -o . | sort -rn | tr -d '\n'" }'

C 
autor: Michał Wysoczański
rozwiązanie: 
#include 
int compare(const char *a, const char *b)
{
return (int) (*b - *a);
}
int main()
{
char kod[] = { 0x52, 0x42, 0x4c, 0x50, 0x41, 0x5a };
int i;
qsort(kod, sizeof(kod), sizeof(char), compare);
for (i = 0; i < sizeof(kod); i++) {
printf("%c", kod[i]);
}
return 0;
} 

C++ 
autor: Piotr Borys
rozwiązanie: 
#include 
#include 
#include 
vector znaki;
znaki.push_back(0x52);
znaki.push_back(0x42);
znaki.push_back(0x4c);
znaki.push_back(0x50);
znaki.push_back(0x41);
znaki.push_back(0x5a);
sort(znaki.begin(), znaki.end());
reverse(znaki.begin(), znaki.end());
// sprawdzamy:
vector::iterator it;
cout << "Kod rabatowy: ";
for (it = znaki.begin(); it != znaki.end(); ++it)
cout << *it;
cout << endl; 


javascript  
autor: Artur Poniat
rozwiązanie: 
var arr = new Array('52','42','4c','50','41','5a');
var arrNew = new Array();
function hex2a(hex) {
var str = '';
for (var i = 0; i < hex.length; i += 2)
str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
return str;
}
for (item in arr)
{
arrNew.push(hex2a(arr[item]));
}
arrNew.sort();
arrNew.reverse();
console.log(arrNew.join(''));


java 
autor: Jacek Jackowiak
rozwiązanie: 
import java.util.Arrays;
 
/**
 *
 * @author airborn
 */
public class Main {
 
    public static void main(String[] args) {
        char[] array = new char[]{0x52, 0x42, 0x4c, 0x50, 0x41, 0x5a};
        Arrays.sort(array);
        StringBuilder sb = new StringBuilder();
        System.out.println(sb.append(array).reverse().toString());
    }
}


pascal  
autor: Konrad Kopciuch
rozwiązanie: 
program helion;
var 
s: string;
i : integer; 
j : integer;
temp: char;
begin
s := chr($52)+chr($42)+chr($4c)+chr($50)+chr($41)+chr($5a);
for i := 1 to 5 do
for j := i + 1 to 6 do
if s[i] < s[j] then
begin 
temp := s[i]; 
s[i] := s[j];
s[j] := temp; 
end;
writeln(s); 
end.


perl  
autor: Jakub Słociński
rozwiązanie: 
perl -e 'foreach(qw/0x52 0x42 0x4c 0x50 0x41 0x5a/ ) 
{push @t, chr hex($_)}; print sort {$b cmp $a} @t' 

php  
autor: Michal Daniel 
rozwiązanie: 
‎$arr = array(chr(hexdec('0x52')), chr(hexdec('0x42')), chr(hexdec('0x4c')), 
chr(hexdec('0x50')), chr(hexdec('0x41')), chr(hexdec('0x5a')));
rsort($arr, SORT_STRING);
foreach ($arr as $v) echo $v;


python  
autor: Michał Białas
rozwiązanie: 
l = [0x52, 0x42, 0x4c, 0x50, 0x41, 0x5a]
tmp = []
for ch in l:
tmp.append(chr(ch))
tmp.sort()
tmp.reverse()
print "".join(tmp)

ruby  
autor: Marcin Prokop
rozwiązanie: 
[0x52, 0x42, 0x4c, 0x50, 0x41, 0x5a].sort{ |x,y| y <=> x }
.each { |c| puts c.chr } 



C# 
autor: Anna Rapacz
rozwiązanie: 

        static void Main(string[] args)
        {
            int n;
            char c;
            string kod = "0x52 0x42 0x4c 0x50 0x41 0x5a";
            string[] kodArray = kod.Split(' ');

            for (int i = 0; i < kodArray.Length; i++)
            {
                kodArray[i] = ((char)Convert.ToInt32(kodArray[i], 
16)).ToString();
//                Console.WriteLine(kodArray[i]);
            }
            Array.Sort(kodArray);
            Array.Reverse(kodArray);

            foreach (string s in kodArray)
                Console.Write(s); //ZRPLBA
            
            Console.ReadLine();

        }


Rozwiązanie zadania przesyłajcie w komentarzu do wpisu odnośnie konkursu i na maila konkurs@helion.pl. Na tej podstawie liczone będzie pierwszeństwo rozwiązania.

Jest 10 języków programowania i wygrywa 10 osób - kto pierwszy w danym języku napisze rozwiązanie ten wygrywa! Co? Dowolnie wybraną książkę Helionu oraz kupon rabatowy na kolejne zakupy w helion.pl!

Zamknij Pobierz aplikację mobilną Helion
Zabrania się wykorzystania treści strony do celów eksploracji tekstu i danych (TDM), w tym eksploracji w celu szkolenia technologii AI i innych systemów uczenia maszynowego. It is forbidden to use the content of the site for text and data mining (TDM), including mining for training AI technologies and other machine learning systems.