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!

