Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Liczba do ciągu literek
Black-Berry
post
Post #1





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Potrzeban mi funkcja która zamienia kolejne liczby na ciągi literek w ten sposób:

1 -> A
2 -> B
3- > C
(...)
25 -> Y
26 -> Z
27 -> AA
28 -> AB
(...)
-> ZY
-> ZZ
-> AAA
-> AAB
(...)

Słyszał ktoś może o jakimś gotowcu? Byłbym wdzięczny.


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
zegarek84
post
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


str_replace - przyjmuje jako argumenty tablice, możesz to w osobnych tablicach zamieścić co za co podmieniać ale prościej w jednej i skożystać jeszcze z array_keys() i array_values()

w manualu pod str_replace co podałem link są przykłady


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
Black-Berry
post
Post #3





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Nie zrozumieliśmy się... Ja nie mam stasłej ilości liczb. To ma być funkcja generująca unikatowy ciąg znaków z unikatowej liczby. To jest powiązane z systemami liczbowymi z tym że ciąg znaków gdzie po 'Z' następuje 'AA' nie jest systemem liczbowym w normalnym roumieniu. Gdyby to był system 26-tkowy to po 'Z' występowałoby 'BA'


--------------------
Go to the top of the page
+Quote Post
likemandrake
post
Post #4





Grupa: Zarejestrowani
Postów: 175
Pomógł: 17
Dołączył: 23.06.2006

Ostrzeżenie: (0%)
-----


Proszę, wygląda na to, że napisałem ją specjalnie dla Ciebie tongue.gif

  1. <?php
  2. function toChar($number) {
  3.    static $alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  4.    
  5.    if ($index = (int) ($number / 26)) {
  6.        return toChar($index - 1) . toChar($number - $index * 26);
  7.    } else {
  8.        return $alphabet{$number};
  9.    }
  10. }
  11.  
  12. for ($i = 0, $n = pow(26, 3) + pow(26, 2) + pow(26, 1); $i < $n; $i++) {
  13.    echo toChar($i) . "<br>";
  14. }
  15. ?>


Ten post edytował likemandrake 4.02.2009, 00:06:42


--------------------
serwiswww.pl
Go to the top of the page
+Quote Post
legorek
post
Post #5





Grupa: Zarejestrowani
Postów: 411
Pomógł: 35
Dołączył: 27.06.2004
Skąd: Kraków

Ostrzeżenie: (0%)
-----


A może base_convert" title="Zobacz w manualu PHP" target="_manual o podstawie 10 i systemie docelowym 36?


--------------------
Go to the top of the page
+Quote Post
likemandrake
post
Post #6





Grupa: Zarejestrowani
Postów: 175
Pomógł: 17
Dołączył: 23.06.2006

Ostrzeżenie: (0%)
-----


To jest dobre tongue.gif

  1. <?php
  2. echo toChar(PHP_INT_MAX);
  3. ?>


--------------------
serwiswww.pl
Go to the top of the page
+Quote Post
Black-Berry
post
Post #7





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


@likemandrake Nie wiem czego się naćpałeś ale to co napisałeś pięknie działa smile.gif W między czasie znalazłem coś takiego:

  1. <?php
  2. function NumberToAlphabet($number)
  3.    {
  4.        $result = '';
  5.        while($number >= 1) {
  6.            $number = $number - 1;
  7.            $result = chr(($number % 26) + 65) . $result;
  8.            $number = $number / 26;
  9.        }
  10.        return $result;
  11.    }
  12. ?>


Muszę to sprawdzić ale chyba twój sposób liczy szybciej:) Zajeło Ci to naprawdę chwilę. Nam z kolegami nie udało się po 2 godzinach biggrin.gif Starość nie radość ;P

@legorek base_convert nic nie da bo to nie jest system liczbowy. Pisałem o tym we wcześniejszym poście.


--------------------
Go to the top of the page
+Quote Post
wrzasq
post
Post #8





Grupa: Zarejestrowani
Postów: 206
Pomógł: 18
Dołączył: 6.03.2006
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


@Black-Berry: ale ale, chwila, jakto nie jest system liczbowy?

Cytat
To jest powiązane z systemami liczbowymi z tym że ciąg znaków gdzie po 'Z' następuje 'AA' nie jest systemem liczbowym w normalnym roumieniu. Gdyby to był system 26-tkowy to po 'Z' występowałoby 'BA'


Cytat
1 -> A


biorac pod uwage, ze nie zdefiniowales zera, natomiast A odpowiada jedynce, to jaknajbardziej z 0Z bedzia AA, nie BA. badz co badz kody podane zadzialaja, ale chyba sam zes siebie przekonał do tego jakie to będzie straszne winksmiley.jpg.


--------------------
Go to the top of the page
+Quote Post
likemandrake
post
Post #9





Grupa: Zarejestrowani
Postów: 175
Pomógł: 17
Dołączył: 23.06.2006

Ostrzeżenie: (0%)
-----


Zdradzić ci mój sekret?

100% abscynencji, 100% braku papierosów, dodatkowo codzienne picie soczku tarczyn, częste picie zielonej herbatki, piękna dziewczyna u boku i może chyba to, że sesje mam :/

Trzeba iść w końcu spać biggrin.gif A co do czasu poświęconego na funkcję, nie wiem czy nie straciłem na to 15-20 minut smile.gif


--------------------
serwiswww.pl
Go to the top of the page
+Quote Post
Black-Berry
post
Post #10





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Cytat(wrzasq @ 4.02.2009, 00:36:58 ) *
@Black-Berry: ale ale, chwila, jakto nie jest system liczbowy?
biorac pod uwage, ze nie zdefiniowales zera, natomiast A odpowiada jedynce, to jaknajbardziej z 0Z bedzia AA, nie BA. badz co badz kody podane zadzialaja, ale chyba sam zes siebie przekonał do tego jakie to będzie straszne winksmiley.jpg.


@wrzasq Jak nietrudno wyliczyć to w naszym systemie dziesiętnym za pomocą 10 znaków zapisujemy dokładnie 100 liczb których długośc nie przekracza 2 znaków. Natomiast gdyby system dziesiętny działał na podobnej zasadzie co ten z literek alfabetu to kolejne liczny tworzylibyśmy tak:
0
1
2
3
4
5
6
7
8
9
00
01
02
03
04
05
(..)
96
97
98
99
000
(..)
itd...
Za pomocą takiego systemu można zapisać 110 różnych liczb których długość nie przekracza 2 znaków. To bardzo utrudnia konwersję przez co trzeba być kosmitą żeby to napisać. Co dowodzi że likemandrake jest z kosmosu. Uważajcie na niego:) Pozdrawiam.


--------------------
Go to the top of the page
+Quote Post
likemandrake
post
Post #11





Grupa: Zarejestrowani
Postów: 175
Pomógł: 17
Dołączył: 23.06.2006

Ostrzeżenie: (0%)
-----


Hmmm, kosmitą powiadasz... Kurcze, a mnie całe życie wmawiali, że urodziłem się w szpitalu :]

A co do tej mojej "kosmicznej" funkcji, od początku założyłem, że dobra będzie rekurencja, a dalej jakoś już się tam działo.


--------------------
serwiswww.pl
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 18:53