Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

WI_IDEN - Skracanie identyfikatorów

W latach 50. ubiegłego wieku, kiedy programowanie było jeszcze w powijakach, kompilatory nie były nawet w części tak zaawansowane, jak są dzisiaj. Na programistę nakładano całą masę ograniczeń różnej natury, które dzisiaj wydawać się mogą śmieszne i niezrozumiałe. I tak na przykład wczesne kompilatory języka Fortran potrafiły narzucać maksymalną długość nazw zmiennych, co oznaczało, że programiście nie było wolno nazywać swoich danych tak, jakby sobie tego życzył i zmuszało go do karkołomnego skracania swoich przydługich nazw, aby woli kompilatora stało się zadość.

W konsekwencji społeczności programistów, skupionych np. w różnych laboratoriach badawczych, wypracowywały dla siebie jednolite konwencje i standardy mówiące, w jaki sposób należy skracać nazwy zmiennych, aby nie były dłuższe niż n (gdzie n mogło silnie zależeć od używanego kompilatora).

Jedną z takich konwencji możemy opisać w sposób następujący:

  • napisz nazwę zmiennej w postaci, w której życzyłbyś sobie ją widzieć – używaj tylko liter, cyfr oraz znaków '_' (podkreślenie) i '$' (dolar); może zabrzmi to dziwnie, ale znak '$' traktować będziemy jak literę (czyni to do dzisiaj wiele kompilatorów);

  • jeśli długość nazwy jest mniejsza równa n, możesz jej użyć i nie musisz robić nic więcej

  • w przeciwnym wypadku usuwaj z nazwy, począwszy od końca, wszystkie znaki, które nie są literami i cyframi – w chwili, w której długość nazwy osiągnie n, możesz zakończyć pracę i użyć nazwy zmiennej

  • jeśli długość nazwy nadal jest większa od n, usuwaj z niej, począwszy od końca, kolejne cyfry - w chwili, w której długość nazwy osiągnie n możesz zakończyć pracę i użyć nazwy zmiennej

  • jeśli długość nazwy nadal jest większa od n, usuwaj z niej, począwszy od początku, kolejne samogłoski z wyjątkiem pierwszej (chodzi o to, by w nazwie została chociaż jedna samogłoska, o ile jakakolwiek została użyta) - w chwili, w której długość nazwy osiągnie n, możesz zakończyć pracę i użyć nazwy zmiennej

  • jeśli długość nazwy nadal jest większa od n, usuwaj z niej znaki od końca, począwszy od przedostatniego - w chwili, w której długość nazwy osiągnie n, możesz zakończyć pracę i użyć nazwy zmiennej

Polecenie: napisz program, który skróci dowolną nazwę zmiennej do maksymalnej długości n w sposób opisany powyższym algorytmem.

Dane wejściowe:

  • 2 wiersze, zawierające kolejno:
    • maksymalną dopuszczalną długość zmiennej
      (n: n >= 1 i n <= 65535)

    • nazwę zmiennej (o długości l), która będzie podlegać skracaniu
      (l: l >= 1 i l <= 65636)

Dane wyjściowe:

  • jeden wiersz, zawierający nazwę zmiennej poddaną algorytmowi skracania.

Przykład:

Wejście:

7
ALA_MA_KOTA_I_2_PSY

Wyjście:

ALMKTPS


Dodane przez:Sławomir Wernikowski
Data dodania:2009-09-11
Limit czasu wykonania programu:1s-10s
Limit długości kodu źródłowego50000B
Limit pamięci:1536MB
Cluster: Cube (Intel G860)
Języki programowania:C CSHARP CPP C99 JAVA PAS-GPC PAS-FPC
Pochodzenie:Konkurs o nagrodę Dziekana WI ZUT w Szczecinie (2009)
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.