<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=2246_-_Adobe</id>
	<title>2246 - Adobe - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=2246_-_Adobe"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2246_-_Adobe&amp;action=history"/>
	<updated>2026-05-01T04:39:51Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2246_-_Adobe&amp;diff=6111&amp;oldid=prev</id>
		<title>Ardelean Alexandru: Pagină nouă: ==Cerința== Domnul Eboda dorește să se angajeze la firma Adobe. La interviu el primește următoarea problemă.  Se dă un șir de caractere format din litere și caracterele &lt;code&gt;*&lt;/code&gt;, &lt;code&gt;+&lt;/code&gt; și &lt;code&gt;-&lt;/code&gt;. Domnul Eboda trebuie să determine câte subsecvențe de lungime &lt;code&gt;5&lt;/code&gt; sunt anagrame ale cuvântului &lt;code&gt;ADOBE&lt;/code&gt;. Regulile suplimentare sunt că nu se face distincție între literele mari și cele mici și în plus, caracterul &lt;code&gt;+...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2246_-_Adobe&amp;diff=6111&amp;oldid=prev"/>
		<updated>2023-05-07T11:24:45Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: ==Cerința== Domnul Eboda dorește să se angajeze la firma Adobe. La interviu el primește următoarea problemă.  Se dă un șir de caractere format din litere și caracterele &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;. Domnul Eboda trebuie să determine câte subsecvențe de lungime &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; sunt anagrame ale cuvântului &amp;lt;code&amp;gt;ADOBE&amp;lt;/code&amp;gt;. Regulile suplimentare sunt că nu se face distincție între literele mari și cele mici și în plus, caracterul &amp;lt;code&amp;gt;+...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Cerința==&lt;br /&gt;
Domnul Eboda dorește să se angajeze la firma Adobe. La interviu el primește următoarea problemă.&lt;br /&gt;
&lt;br /&gt;
Se dă un șir de caractere format din litere și caracterele &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;. Domnul Eboda trebuie să determine câte subsecvențe de lungime &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; sunt anagrame ale cuvântului &amp;lt;code&amp;gt;ADOBE&amp;lt;/code&amp;gt;. Regulile suplimentare sunt că nu se face distincție între literele mari și cele mici și în plus, caracterul &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; poate suplini oricare consoană, caracterul &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt; suplinește orice vocală, iar &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; suplinește orice literă. Cu aceste reguli putem spune că următoarele secvențe de cinci caractere sunt anagrame ale cuvântului &amp;lt;code&amp;gt;adobe&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;aeobd&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dBoAE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;db---&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Ae-++&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;*****&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;++---&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ad*-+&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul citește de la tastatură șirul de caractere.&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Pe ecran se va afișa mesajul: &amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pe următoarea linie se va afișa un singur număr natural reprezentând numărul de subsecvențe de lungime &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; care sunt anagrame ale cuvântului &amp;lt;code&amp;gt;ADOBE&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul &amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&lt;br /&gt;
* Șirul va avea cel mult &amp;lt;code&amp;gt;100 000&amp;lt;/code&amp;gt; de caractere și nu conține alte caractere în afara celor precizate în enunț.&lt;br /&gt;
&lt;br /&gt;
==Exemplu 1==&lt;br /&gt;
;Intrare&lt;br /&gt;
:ebodaE+m***++&lt;br /&gt;
;Ieșire&lt;br /&gt;
:Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
:4&lt;br /&gt;
===Explicație===&lt;br /&gt;
Cele patru subsecvențe sunt: &amp;lt;code&amp;gt;eboda&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;bodaE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;odaE+&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;***++&amp;lt;/code&amp;gt;.&lt;br /&gt;
==Exemplu 2==&lt;br /&gt;
;Intrare&lt;br /&gt;
:e1b2o3d4a5E6+7m8*9*0*9+8+76&lt;br /&gt;
;Ieșire&lt;br /&gt;
:Datele de intrare nu corespund restricțiilor impuse.&lt;br /&gt;
&lt;br /&gt;
==Rezolvare==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
# 2246 - Adobe&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def conditii(sir):&lt;br /&gt;
    if re.match(&amp;quot;^[a-zA-Z*+-]*$&amp;quot;, sir):&lt;br /&gt;
        return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def adobe(sir):&lt;br /&gt;
    # Șirul este case-insensitive, deci poate fi convertit în litere mici&lt;br /&gt;
    sir = sir.lower()&lt;br /&gt;
    # Ținem cont de subsecvențe&lt;br /&gt;
    nr_subsecvente = 0&lt;br /&gt;
&lt;br /&gt;
    # Pentru fiecare grupare de 5 caractere&lt;br /&gt;
    for i in range(0, len(sir)-5):&lt;br /&gt;
        # Dacă este anagramă a cuvântului &amp;quot;adobe&amp;quot;...&lt;br /&gt;
        if sorted(sir[i:i + 5]) == sorted(&amp;quot;adobe&amp;quot;):&lt;br /&gt;
            # ...creștem numărul de subsecvențe&lt;br /&gt;
            nr_subsecvente += 1&lt;br /&gt;
            continue&lt;br /&gt;
        # Altfel...&lt;br /&gt;
        else:&lt;br /&gt;
            subsir = sir[i:i + 5]&lt;br /&gt;
            # Inițializăm numărul de consoane, vocale și litere lipsă&lt;br /&gt;
            # &amp;quot;Adobe&amp;quot; conține 2 consoane, 3 vocale; în total 5 litere&lt;br /&gt;
            consoane_lipsa, vocale_lipsa, litere_lipsa = 2, 3, 5&lt;br /&gt;
            # Pentru fiecare caracter din subsir...&lt;br /&gt;
            for caracter in subsir:&lt;br /&gt;
                # ...dacă caracterul este *...&lt;br /&gt;
                if caracter == &amp;quot;*&amp;quot;:&lt;br /&gt;
                    # ...scădem numărul de vocale, consoane și litere lipsă&lt;br /&gt;
                    litere_lipsa -= 1&lt;br /&gt;
                    vocale_lipsa -= 1&lt;br /&gt;
                    consoane_lipsa -= 1&lt;br /&gt;
                    continue&lt;br /&gt;
                # ...dacă caracterul este vocală sau -...&lt;br /&gt;
                if caracter in (&amp;quot;a&amp;quot;, &amp;quot;o&amp;quot;, &amp;quot;e&amp;quot;, &amp;quot;-&amp;quot;):&lt;br /&gt;
                    # ...scădem numărul de vocale și litere lipsă&lt;br /&gt;
                    vocale_lipsa -= 1&lt;br /&gt;
                    litere_lipsa -= 1&lt;br /&gt;
                    continue&lt;br /&gt;
                # ...dacă caracterul este consoană sau +...&lt;br /&gt;
                if caracter in (&amp;quot;b&amp;quot;, &amp;quot;d&amp;quot;, &amp;quot;+&amp;quot;):&lt;br /&gt;
                    # ...scădem numărul de consoane și litere lipsă&lt;br /&gt;
                    consoane_lipsa -= 1&lt;br /&gt;
                    litere_lipsa -= 1&lt;br /&gt;
                    continue&lt;br /&gt;
&lt;br /&gt;
            # Dacă nu mai lipsesc consoane, vocale sau litere...&lt;br /&gt;
            if consoane_lipsa+vocale_lipsa+litere_lipsa == 0:&lt;br /&gt;
                # ...creștem numărul de subsecvențe&lt;br /&gt;
                nr_subsecvente += 1&lt;br /&gt;
&lt;br /&gt;
    print(nr_subsecvente)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    sir = input()&lt;br /&gt;
&lt;br /&gt;
    if not conditii(sir):&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        adobe(sir)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ardelean Alexandru</name></author>
	</entry>
</feed>