If the logic for the Display Name does not have additional Uniqueness constraints, you could likely use the AttributeGeneratior Rule for the SamAccountName requirement, and pass the existing displayName (Or on create, pass a default value) when creating the provisioning plan.
Then use a before provisioning rule to get the result from the SamAccountName field and do the additional calculations to get the desired DisplayName and update the DisplayName on the plan to the correct value.
I don’t think you can guarantee that the SamAccountName field will be calculated before the display name to be able to use that in an Attribute Generator rule for DisplayName also.
Alternately, since this seems to be for AD, you could do the DisplayName calculations in a Connector Before Creation Rule and/or Before Modify Rule with Powershell if you do not need additional attributes that are not already in the plan.